问题标签 [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 投票
2 回答
11728 浏览

java - 需要在java中将字符串分成两部分

我有一个字符串,其中包含一个连续的数字块,然后是一个连续的字符块。我需要将它们分成两部分(一个整数部分和一个字符串)。

我尝试使用String.split("\\D", 1),但它正在吃掉第一个字符。我检查了所有 String API 并没有找到合适的方法。

有什么方法可以做这件事吗?

0 投票
3 回答
7397 浏览

regex - 如何为以 .php 结尾的文件制作正则表达式?

我正在尝试编写一个非常简单的正则表达式来匹配任何不以.php 结尾的文件名。我想出了以下...

...但是这匹配所有文件名。如果有人能指出我正确的方向,我将不胜感激。

0 投票
2 回答
1075 浏览

regex - 前瞻混乱

好的,我从正则表达式食谱中得到了这个例子

上面的正则表达式用于限制任意模式的长度

如果我再次测试'aaabbb',它会完全失败

据我了解,它会查找长度为任何字符 3 的任何字符。所以它应该匹配 'bbb' 但它不是

还有一个问题,应该遵循这种模式 x(?=x)

0 投票
3 回答
16165 浏览

regex - 我们如何匹配 a^nb^n?

这是一系列教育正则表达式文章的第二部分。它显示了如何使用前瞻和嵌套引用来匹配非常规语言 a n b n。嵌套引用首先在:这个正则表达式如何找到三角数?

一种原型非正则语言是:

L = { an bn: n > 0 }

这是所有非空字符串的语言,由一定数量的a' 后跟相等数量的b' 组成。这种语言中的字符串示例有ab, aabb, aaabbb.

泵引理可以证明这种语言是非常规的。它实际上是一种原型上下文无关语言,可以通过上下文无关文法 S → aSb | ab生成。

尽管如此,现代正则表达式实现清楚地识别的不仅仅是常规语言。也就是说,它们不是形式语言理论定义的“常规”。PCRE 和 Perl 支持递归正则表达式,.NET 支持平衡组定义。更不“花哨”的功能,例如反向引用匹配,意味着正则表达式不是正则表达式。

但是这个“基本”功能到底有多强大?例如,我们可以L用 Java 正则表达式识别吗?我们是否可以将环视和嵌套引用结合起来,并使用一种模式String.matches来匹配诸如ab, aabb,aaabbb等之类的字符串?

参考

相关问题

0 投票
2 回答
8323 浏览

regex - 正则表达式 - 前瞻断言

我对前瞻断言 (?=) 有疑问。例如,我有表达:

它匹配Win, 如果表达式是Win2000, Win2000fgF。我有下一个表达:

它匹配数字和小写字母,例如:45dF, 4Dd. 但我不知道,为什么它可以工作并匹配所有字符:) 我没有字符,它们是 before (?=.*\d)。我认为,只有这个表达式应该有效:

(与\*之前的表达)。

你能解释一下吗?

0 投票
3 回答
126659 浏览

regex - 正则表达式直到但不包括

对于正则表达式,搜索直到但不包括的语法是什么?有点像:

0 投票
4 回答
374 浏览

regex - 带有前瞻的正则表达式

我似乎无法使这个正则表达式工作。

输入如下。它确实在一行,但我在每个 \r\n 之后插入了换行符,以便更容易看到,因此不需要检查空格字符。

这可能会在另一个 01-31 和 02-01 继续,标志着另一个新的比赛(这些是日期)。

我希望这个输入总共有 2 个匹配项。我的问题是我无法弄清楚如何向前看并匹配新比赛的开始(两个以下日期),但不包括在第一场比赛中的日期。他们应该属于第二场比赛。

这很难解释,但我希望有人能得到我。这是我到目前为止得到的,但还没有接近:

我想要的比赛是:

之后,我可以轻松地用 \r\n 分隔列。

0 投票
6 回答
1278 浏览

regex - 正则表达式负前瞻

我正在做一些正则表达式体操。我为自己设定了尝试搜索 C# 代码的任务,其中使用了 as-operator 而不是在合理的空间内进行空检查。现在我不想解析 C# 代码。例如,我想捕获代码片段,例如

但是,不捕获

也不是就此而言

因此,任何随机空检查都将算作“良好检查”,因此不会被发现。

问题是:我如何匹配某些东西,同时确保在其周围环境中找不到其他东西。

我尝试过天真的方法,寻找“as”,然后在 150 个字符内进行负前瞻。

不幸的是,上面的正则表达式匹配了上面所有的例子。我的直觉告诉我,问题是向前看然后做负向前看可以发现很多情况,其中向前看没有找到'== null'。

如果我尝试否定整个表达式,那么这也无济于事,因为它会匹配大多数 C# 代码。

0 投票
2 回答
389 浏览

java - Java RegEx 与前瞻失败

在 Java 中,我无法让正则表达式按照我想要的方式运行,并编写了这个小 JUnit 测试来演示这个问题:

除了标有注释的两行外,每一行都通过。除了模式字符串之外,这些分组是相同的。为什么添加不区分大小写会破坏匹配器?

0 投票
2 回答
3434 浏览

java - 负前瞻正则表达式不起作用

要求:找到"caused"后跟斜杠后跟任意数量的大写字母的单词 - 并且不跟空格 + "by/IN

在上面的例子中,"caused/VBN"后面跟着" by/IN",所以 'caused' 不应该匹配。

"by/IN"不遵循引起的,所以它应该匹配

caused/[A-Z]+-- 单词 'caused' + / + 一个或多个大写字母
(?![\\s]+by)-- 负前瞻 - 不匹配空格和 by

下面是我用来测试的一个简单方法

输出:caused/VB

我不明白为什么我的负前瞻正则表达式不起作用。