问题标签 [regex-lookarounds]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
349 浏览

regex - 负面展望

考虑两种printk函数调用 -

我正在编写一个正则表达式来匹配上面的整个函数调用,它们%内部有字符串参数,但如果字符串END也在里面,则不应该匹配。

我像这样使用了负前瞻

我希望这个正则表达式只匹配第二个函数调用,但它也匹配第一个。

我想我在贪婪的*部分出错了。

0 投票
1 回答
445 浏览

c# - 正则表达式:在仍捕获数据的同时进行后视的性能?

在我的 C# 项目中,我正在解析日期的文本。日期可以有多种格式,目的是找出并纠正一些日期格式错误。各种日期格式意味着一组定义的日期格式是不可行的。最初,我将一组大约 10 个正则表达式一个一个地应用于输入字符串。这在功能上很好,但是当字符串达到 200 KB 的文本时,性能就成了问题,因为该函数需要大约 150 毫秒。

我发现我可以通过将日期正则表达式仅应用于日期子字符串来显着提高性能。因此,如果所有日期都必须具有英文月份名称,则使用正则表达式

会找到他们。如果我然后做一些子字符串来匹配一个月左右的文本,整体功能性能大约是 25 毫秒,好多了。但是,子字符串/循环、长度检查代码不整洁,感觉不是一个很好的解决方案。我真正想要的是一个正则表达式来匹配月份和它周围的文本,比如

在功能上很好。然而,这个正则表达式的性能大约需要 3500 毫秒才能在相同的长输入字符串上找到匹配项。

现在类似的正则表达式

积极的后视在大约 15 毫秒内找到匹配项(由于非常减少的回溯,我接受并有所了解的原因)。但是,这对我的使用不起作用,因为我需要将月份名称前后的文本包含在匹配结果中。

所以,我的问题是,我可以有一个正则表达式,它具有使用后视的性能,但具有在匹配结果中提供所有文本的功能?

0 投票
3 回答
9030 浏览

java - perl 和 java 正则表达式功能有什么区别?

perl 和 java 在支持哪些正则表达式术语方面有什么区别?

这个问题仅与正则表达式隔离,并且特别排除了如何使用正则表达式的差异 - 即使用正则表达式的可用函数/方法 - 以及语言之间的句法差异,例如 java 要求转义反斜杠等。

特别令人感兴趣的是 java 对可变长度后视的部分/偶尔支持。

0 投票
1 回答
306 浏览

java - 将用于跳过缺失信息的正则表达式从 python 转换为 java-7

我有以下测试用例,我需要为其开发一个正则表达式,以便捕获命名组中的特定信息部分。

测试用例是:

要查找的组是:Title、Volume、ChapterStart 和 ChapterEnd。例如在下面的情况下,这些会捕获

唯一的强制性组是 Title,其他是可选的,如上面列出的其他用例场景中所示。

到目前为止,我能够想出以下正则表达式,它成功地处理了前三种情况:

但是,我不知道如何在一个正则表达式中处理最后两种情况,而不必回收组名。组名是静态的,因为接收此正则表达式的程序使用它们来提取特定的信息片段(系列名称、标题、卷和章节编号等)

我现在有两个问题:

  1. 如何让正则表达式处理卷信息缺失的情况。

  2. 如何将此正则表达式从 python re 兼容性转换为 Java 1.7 正则表达式兼容性,目前无法匹配完全相同的测试用例。(我只通过删除“P”来更改命名组符号)

任何帮助将不胜感激。

注意:标题可以是任意数量的单词,包含大写字母、小写字母、数字、特殊字符、unicode 字符,以空格、点、下划线和/或破折号等分隔。所以唯一的方法是识别结尾是否查找前面有空格字符(空格、点、下划线等)或到达字符串末尾的 av 或 c。

0 投票
2 回答
3165 浏览

regex - Perl 正则表达式匹配字符串不以某事结尾

请问什么正则表达式可以正确匹配?

我想识别不以特定文本(_array)结尾的字符串。我试图使用负前瞻,但我无法让它工作。(注意,显而易见的答案是逆向 (m{_array$}),但我不想这样做是有原因的)。

我想要的输出应该是:

0 投票
1 回答
127 浏览

regex - 如果前面的文本不是“class=”,则匹配一个单词

我正在尝试为搜索创建一个正则表达式,它将查看以下代码并仅返回 id 而不是类:

我想contact从第 1 行和第 3 行返回,而不是第 2 行和第 4 行。

这是为了跨多个文件进行搜索,以避免单独检查每个文件并检查它是否需要更改。

这可能吗?

0 投票
1 回答
20302 浏览

regex - 在 if-elsif-else-end 中使用正则表达式

我正在尝试使用 REGEX 来做一个if-then-elsif-then-else-then-end 例子:

(?(?=condition)(then1|then2|then3)|(else1|else2|else3))http://www.regular-expressions.info/conditional.html找到但不知道如何使它在这种情况下工作。这是我的正则表达式if-then-else-then-end

  • 如果字符串以 3 结尾
  • 然后返回 foo
  • 否则返回栏

我认为可以在父阶段的 else 中编写另一个 if-else 但不能:(

0 投票
2 回答
596 浏览

regex - 正则表达式在输入中的任意位置查找字符类的 n 到 m 之间

断言输入中至少有 n 个但不超过 m 个字符类的正则表达式展望是什么。

举一个简单的具体例子,假设我想断言输入中有5-8 位数字,并且输入由单词字符和空格组成(即[ \w]*)。然后:

我已经尝试了各种组合{5,8}

但 的 上限8没有被应用为匹配上面的第 4 行(例如在regexpal上)。

0 投票
3 回答
181 浏览

javascript - 正则表达式前瞻多个元素

当这些字符没有立即遵循先行断言时,是否可以使用先行来确定一个或多个字符是否存在/不存在?

例如
给定类似于此的正则表达式:

例如,如果第一组中有“a”,我是否可以只允许第三组中的“i”作为匹配项?

0 投票
1 回答
885 浏览

regex - 如何在两个其他单词之间查找超过 3 个字符的单词

我有两句话:

在正则表达式的帮助下:

  1. 我想找到有狗和猫在一起没有人的句子
  2. 我还需要在 dog 和 cat 之间有超过 3 个字符的单词,我们找不到人类