Questions tagged «regex»

正则表达式提供了一种声明性语言来匹配字符串中的模式。它们通常用于字符串验证,解析和转换。由于正则表达式尚未完全标准化,因此带有此标签的所有问题还应包括一个标签,用于指定适用的编程语言或工具。注意:询问HTML,JSON等正则表达式往往会产生负面反应。如果有解析器,请改用它。

5
您能只区分大小写的正则表达式吗?
我已经看到了很多使整个正则表达式不区分大小写的示例。我想知道的是让表达式的一部分不区分大小写。 例如,假设我有一个像这样的字符串: fooFOOfOoFoOBARBARbarbarbAr 如果我想匹配所有出现的“ foo”(无论大小写),但我只想匹配大写的“ BAR”怎么办? 理想的解决方案是可以在正则表达式中使用的东西,但我也想听听特定于语言的东西(谢谢Espo) 编辑 Espo提供的链接非常有帮助。那里有一个很好的例子,可以在表达式中打开和关闭修饰符。 对于我想做的示例,我可以执行以下操作: (?i)foo*(?-i)|BAR 这使得匹配仅对匹配的foo部分不区分大小写。 除Javascript,Python和其他一些(如Espo所述)外,这似乎在大多数正则表达式实现中均有效。 我所想知道的大公司(Perl,PHP,.NET)都支持内联模式更改。
100 regex 

4
re模块中的正则表达式是否支持单词边界(\ b)?
在尝试了解有关正则表达式的更多信息时,一个教程建议您可以使用\b来匹配单词边界。但是,Python解释器中的以下代码片段无法按预期工作: >>> x = 'one two three' >>> y = re.search("\btwo\b", x) 如果有任何匹配项,它应该是一个匹配对象,但它是None。 \bPython不支持该表达式吗?或者我使用的是错误的?
100 python  regex 

6
字母,数字和-的正则表达式
我无法在PHP中检查值是否为以下任意组合 字母(大写或小写) 数字(0-9) 下划线(_) 破折号(-) 点(。) 空间不足!或其他字符 一些例子: OK:“ screen123.css” OK:“ screen-new-file.css” OK:“ screen_new.js” 不稳定:“屏蔽新的file.css” 我想我需要一个正则表达式,因为当给定字符串中包含除上述字符以外的其他字符时,我需要抛出一个错误。
100 regex 

12
如何在Python中使用正则表达式验证URL?
我正在Google App Engine上构建应用程序。我是Python的新手,在过去3天里,我一直对下面的问题problem之以鼻。 我有一个表示RSS Feed的类,在这个类中,我有一个名为setUrl的方法。输入此方法的是URL。 我正在尝试使用re python模块来验证RFC 3986 Reg-ex(http://www.ietf.org/rfc/rfc3986.txt) 下面是一个片段,哪个应该工作? p = re.compile('^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?') m = p.match(url) if m: self.url = url return url

3
我们如何将a ^ nb ^ n与Java正则表达式匹配?
这是一系列教育正则表达式文章的第二部分。它显示了如何使用前瞻和嵌套引用来匹配非常规语言a n b n。嵌套引用首先在以下地方引入:此正则表达式如何查找三角数? 原型非常规语言之一是: L = { añ bñ: n > 0 } 这是所有非空字符串的语言,其中包括一定数量的,a后跟相等数量b的。在这个语言字符串的例子有ab,aabb,aaabbb。 抽引引理可以证明这种语言是不规则的。实际上,它是原型上下文无关的语言,可以由上下文无关的语法 生成S → aSb | ab。 尽管如此,现代正则表达式实现显然不仅仅可以识别常规语言。也就是说,根据形式语言理论的定义,它们不是“正常的”。PCRE和Perl支持递归正则表达式,.NET支持平衡组定义。更少的“花哨”功能(例如反向引用匹配)意味着正则表达式不是常规的。 但是,这种“基本”功能到底有多强大?L例如,我们可以用Java正则表达式识别吗?我们也许可以结合lookarounds和嵌套引用,并有一个模式,与如作品String.matches来匹配字符串一样ab,aabb,aaabbb,等? 参考文献 perlfaq6:我可以使用Perl正则表达式来匹配平衡文本吗? MSDN-正则表达式语言元素-平衡组定义 pcre.org-PCRE手册页 regular-expressions.info - Lookarounds和分组和反向引用 java.util.regex.Pattern 关联问题 环视是否会影响正则表达式可以匹配哪些语言? .NET Regex平衡组与PCRE递归模式

13
以点为分隔符分割字符串
我想知道我是否打算.以正确的方式分割字符串?我的代码是: String[] fn = filename.split("."); return fn[0]; 我只需要字符串的第一部分,这就是为什么我返回第一项的原因。我问是因为我在API中注意到这.意味着任何字符,所以现在我陷入了困境。
99 java  regex  string  split 

5
RegEx解析或验证Base64数据
是否可以使用RegEx来验证或清除Base64数据?这是一个简单的问题,但是导致这个问题的因素是什么使它变得困难。 我有一个Base64解码器,它不能完全依赖输入数据来遵循RFC规范。因此,我面临的问题是可能未将Base64数据分解为78(我认为是78,我必须仔细检查RFC,因此如果确切的数字有误,请不要给我发声)字符。行,或者行不能以CRLF结尾;因为它可能只有CR或LF,也可能没有。 因此,我很难解析这样格式化的Base64数据。因此,无法可靠地解码以下示例。为了简洁起见,我将仅显示部分MIME标头。 Content-Transfer-Encoding: base64 VGhpcyBpcyBzaW1wbGUgQVNDSUkgQmFzZTY0IGZvciBTdGFja092ZXJmbG93IGV4YW1wbGUu 好的,所以解析没有问题,而正是我们期望的结果。在99%的情况下,使用任何代码至少验证缓冲区中的每个字符都是有效的base64字符,都可以正常工作。但是,下一个示例将一把扳手扔进了锅里。 Content-Transfer-Encoding: base64 http://www.stackoverflow.com VGhpcyBpcyBzaW1wbGUgQVNDSUkgQmFzZTY0IGZvciBTdGFja092ZXJmbG93IGV4YW1wbGUu 这是Base64编码的一种版本,在一些病毒和其他东西中,我已经看到它们试图利用某些邮件阅读器,他们希望不惜一切代价来解析mime,而不是严格按照书本或RFC进行解析。如果可以的话。 我的Base64解码器将第二个示例解码为以下数据流。请记住,原始流是所有ASCII数据! [0x]86DB69FFFC30C2CB5A724A2F7AB7E5A307289951A1A5CC81A5CC81CDA5B5C1B19481054D0D 2524810985CD94D8D08199BDC8814DD1858DAD3DD995C999B1BDDC8195E1B585C1B194B8 任何人都有同时解决两个问题的好方法吗?我不确定是否有可能,除了对数据应用了不同的规则进行两次转换并比较结果之外。但是,如果您采用这种方法,那么您信任哪个输出?看来ASCII启发式技术是最好的解决方案,但实际上,该代码涉及的病毒扫描程序又要复杂多少呢?代码,执行时间和复杂性又会增加多少呢?您将如何训练启发式引擎来了解什么是可接受的Base64,什么不是? 更新: 对于这个问题继续得到的观点,我决定发布一个简单的RegEx,该正则表达式已经在C#应用程序中使用了3年,涉及数十万笔交易。老实说,我最喜欢Gumbo给出的答案,这就是为什么我选择它作为选定答案。但是对于使用C#并寻找一种至少能检测出一个字符串或byte []是否包含有效Base64数据的快速方法的人,我发现以下内容对我来说非常有效。 [^-A-Za-z0-9+/=]|=[^=]|={3,}$ 是的,这仅适用于STRING的Base64数据,而不是格式正确的RFC1341消息。因此,如果您要处理此类数据,请在尝试使用上述RegEx之前将其考虑在内。如果您出于其他目的(URL,文件名,XML编码等)使用Base16,Base32,Radix或什至Base64,那么强烈建议您阅读Gumbo在其回答中提到的RFC4648,因为您需要保持良好状态在尝试使用此问题/答案集中的建议之前,请了解实现所使用的字符集和终止符。



13
检查字符串是否为html
我有一个特定的字符串,我想检查它是否为html。我使用正则表达式相同,但没有得到正确的结果。 我验证了我的正则表达式,在这里工作正常。 var htmlRegex = new RegExp("<([A-Za-z][A-Za-z0-9]*)\b[^>]*>(.*?)</\1>"); return htmlRegex.test(testString); 这是小提琴,但正则表达式未在其中运行。http://jsfiddle.net/wFWtc/ 在我的机器上,代码可以正常运行,但结果为false而不是true。这里缺少什么?
98 javascript  regex 

12
将HTML标签作为HTML实体转义的最快方法?
我正在写一个Chrome扩展程序,包括做了很多以后的工作中:消毒的字符串可能包含HTML标签,通过转换<,>并&以<,>和&分别。 (换句话说,与PHP相同htmlspecialchars(str, ENT_NOQUOTES)-我认为并不需要转换双引号字符。) 这是到目前为止我发现的最快的功能: function safe_tags(str) { return str.replace(/&/g,'&').replace(/</g,'<').replace(/>/g,'>') ; } 但是,当我不得不一次性运行数千个字符串时,仍然存在很大的滞后。 任何人都可以对此进行改进吗?如果有所不同,则通常用于10到150个字符之间的字符串。 (我曾经想到的一个想法是不必费心编码大于号-这样会不会有真正的危险?)

3
函数仅从字符串返回字母数字字符?
我正在寻找一个php函数,该函数将接受一个输入字符串,并通过去除所有仅保留字母数字的特殊字符来返回其净化版本。 我需要另一个功能相同但仅返回字母字符AZ的函数。 任何帮助,不胜感激。
98 php  regex 


6
计算Javascript中正则表达式的匹配数
我想编写一个正则表达式来计算文本块中空格/制表符/换行符的数量。所以我天真地写了以下内容: numSpaces : function(text) { return text.match(/\s/).length; } 由于某些未知原因,它总是返回1。上面的陈述有什么问题?此后,我通过以下方法解决了该问题: numSpaces : function(text) { return (text.split(/\s/).length -1); }
98 javascript  regex 

10
合理的JavaScript模糊搜索
我正在寻找一个模糊搜索JavaScript库来过滤数组。我尝试使用Fuzzyset.js和fuse.js,但是结果很糟糕(可以在链接的页面上尝试一些演示)。 在对Levenshtein距离进行了一些阅读之后,我对用户输入时所寻找的内容的近似性感到不满意。对于那些不知道的人,系统会计算要使两个字符串匹配,需要多少个插入,删除和替换。 在Levenshtein-Demerau模型中修复的一个明显缺陷是,blub和boob都被认为与bulb相似(都需要两次替换)。很明显,但是,灯泡更类似于咕噜比布布是的,我刚才提到的模型识别到,允许换位。 我想在文本补全的背景下使用它,因此,如果我有一个数组['international', 'splint', 'tinder'],并且我的查询是int,我认为International应该比splint排名更高,即使前者的得分(高=差)为10与后者的3。 因此,我正在寻找(并且如果不存在的话将创建)一个执行以下操作的库: 权衡不同的文本操作 根据每个单词在单词中出现的位置,对每个操作进行加权加权(较早的操作比较晚的操作成本更高) 返回按相关性排序的结果列表 有没有人遇到过这样的事情?我意识到,StackOverflow并不是要求软件推荐的地方,但是上面的隐式(不再是!)是:我是否正在以正确的方式考虑? 编辑 我找到了一篇很好的论文(pdf)。一些注释和摘录: 仿射编辑距离功能为插入或删除序列分配了相对较低的开销 Monger-Elkan距离函数(Monge&Elkan 1996),它是Smith-Waterman距离函数(Durban et al。1998)的仿射变体,具有特定的成本参数 对于史密斯-沃特曼距离(Wikipedia),“史密斯-沃特曼算法无需查看总序列,而是比较所有可能长度的片段并优化相似性度量。” 这是n-gram方法。 大致上类似的度量标准(不是基于编辑距离模型)是Jaro度量标准(Jaro 1995; 1989; Winkler 1999)。在记录链接文献中,使用此方法的变体已获得了良好的结果,该变体基于两个字符串之间的公共字符的数量和顺序。 由于Winkler(1999)的不同,它也使用最长公共前缀的长度P (似乎主要用于短字符串) 为了完成文本,Monger-Elkan和Jaro-Winkler方法似乎最有意义。Winkler对Jaro度量标准的添加有效地对单词的开头进行了更重的加权。而且,Monger-Elkan的仿射方面意味着完成一个单词的必要性(这只是一系列加法)不会太不利于它。 结论: TFIDF排名在几个基于令牌的距离度量中表现最好,而Monge和Elkan提出的经过调整的仿射间隔编辑距离度量在几个字符串编辑距离度量中表现最好。令人惊讶的良好距离度量是Jaro提出并随后由Winkler扩展的快速启发式方案。这几乎和Monge-Elkan方案一样有效,但是速度要快一个数量级。结合TFIDF方法和Jaro-Winkler的一种简单方法是用基于Jaro-Winkler方案的近似令牌匹配替换TFIDF中使用的精确令牌匹配。平均而言,此组合的性能比Jaro-Winkler或TFIDF都要好,偶尔也要好得多。在性能上也接近本文所考虑的几种最佳指标的学习组合。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.