问题标签 [lookahead]

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 回答
424 浏览

php - 用于选择数字和十进制字符之间的空格的正则表达式

我想从空格前面有数字或“。”的字符串中删除空格。并以数字或“.”作为后缀。我有这样的字符串:“50 .10”、“50 . 10”、“50. 10”,我希望它们都变成“50.10”,但两边的位数未知。我正在尝试像这样的前瞻/后视断言:

但它不起作用......

0 投票
4 回答
4334 浏览

regex - 环视是否会影响正则表达式可以匹配哪些语言?

现代正则表达式引擎中有一些功能允许您匹配没有该功能无法匹配的语言。例如,以下使用反向引用的正则表达式匹配由重复自身的单词组成的所有字符串的语言:(.+)\1. 这种语言不是正则的,不能被不使用反向引用的正则表达式匹配。

环视是否也会影响正则表达式可以匹配哪些语言?即是否有任何语言可以使用环视来匹配,否则无法匹配?如果是这样,这是否适用于所有类型的环视(消极或积极的前瞻或后视)或仅适用于其中一些?

0 投票
3 回答
147 浏览

regex - 复杂(?)正则表达式:是表达式,但不是另一个

(如果你能做出更好的标题,请做)

你好,

我需要确保字符串与以下正则表达式匹配:

但鉴于此,我需要确保它与 Guid 不匹配,我的 Guid 匹配 reg-ex 看起来像这样(显然,这需要在合并结果中取反):

这里的最后一个要求是它们必须(如果可能的话)合并到一个表达式中。

0 投票
3 回答
4461 浏览

regex - 正则表达式 '(?<=#)[^#]+(?=#)' 是如何工作的?

我在 C# 程序中有以下正则表达式,并且难以理解它:

我将其分解为我认为我理解的内容:

所以我遇到的问题是?<=?<部分。从阅读 MSDN,?<name>用于命名组,但在这种情况下,尖括号永远不会关闭。

我在文档中找不到?=,搜索它真的很困难,因为搜索引擎大多会忽略那些特殊字符。

0 投票
4 回答
10201 浏览

regex - 正则表达式匹配 {1,2,3,4} 的所有排列而不重复

我在 ruby​​ 中实现以下问题。

这是我想要的模式:

1234、1324、1432、1423、2341 等

即四位数字中的数字应该在[1-4]之间并且也应该是非重复的。

为了让您以简单的方式理解,我采用两位数模式,解决方案应为:12、21

即数字应该是 1 或 2 并且应该是非重复的。

为了确保它们不重复,我想使用 $1 作为我的第二个数字的条件,但它不起作用。

请帮助我并提前感谢。

0 投票
2 回答
2771 浏览

c# - .NET 中的惰性正则表达式匹配。这里有什么问题?

在以下示例中,我想检索pMAINp 和第一个pMDSp之间的文本。正则表达式有后视和前瞻:

我希望的结果是:“ MAP B FlightTest Load ”

但它返回的是:“MAP B FlightTest Load pMDSp ZutiCarrier pWingp some pMDSp more pWingp end”

你会注意到我在这里尝试了一个惰性匹配:(pMDS)?这显然是行不通的!对此的任何帮助将不胜感激。谢谢。:-)

编辑:哎呀,寻求的文本已被更正。

这很好用:
string blockMainRegex = @"(?<=pMAINp)[\s\w+]+?(?=pMDS)";

0 投票
3 回答
484 浏览

javascript - 具有前瞻功能的浏览器对正则表达式的不同解释

我在 javascript 中使用/\s+(AND|OR)(?=\s+")\s+/on进行拆分

现在,我对正则表达式的理解将导致我期望获得以下数组:

注意:为了清楚起见,我去掉了分隔符。

但是,我得到

在 OS X 10.6.4 上的 Firefox 3.6.8、Chrome 5.0.375.126 和 Safari 5.0.1 上运行时。

但是,当我尝试使用默认设置的最新 IE8 8.0.6 时,我得到了我最初的期望。PHP 5.2.10preg_split也以这种方式拆分它。

我的猜测是,一旦“好”浏览器出错了,但我想要更多意见。

编辑:我在这里用电子邮件给出的例子是一个天真的例子。基本上我不知道每个成员可以是什么。"xyz" = '1' AND "zyx" = 'test AND toast'是另一个可能的输入字符串。

我对结构的了解是整个字符串将具有以下模式:

注:空格实际代表\s+

0 投票
3 回答
728 浏览

php - 左侧的正则表达式不贪心(即,双方可能的最窄匹配)

假设我正在尝试匹配/dog.*lab/此文本:

“我有一条狗。我的狗是黑实验室。他是在实验室中创造出来的。”

贪婪地,它会匹配“狗。我的狗是黑实验室。他是在实验室中创造的”。

我想找到双方最窄的匹配项。如果我使用 ungreedy 修饰符 like
/dog.*?lab/or/dog.*lab/U它会匹配得更少但仍然太多:
“狗。我的狗是黑色实验室”

有没有办法让我的搜索也从左边不贪心,从而只匹配“狗是黑色实验室”?

非常感谢。对不起这个人为的例子。

0 投票
4 回答
1189 浏览

regex - 正则表达式匹配标签内容,同时省略前导和尾随空格

我正在尝试编写一个匹配标记的全部内容的正则表达式,减去任何前导或尾随空格。这是输入的简化示例:

<tag> 正文 </tag>

我只希望匹配以下内容(注意匹配前后的空格是如何被修剪的):

“文本”

我目前正在尝试在.NET(Powershell)中使用这个正则表达式:

但是,此正则表达式匹配“文本”加上标签内的前导空格,这是不希望的。如何修复我的正则表达式以按预期工作?

0 投票
1 回答
394 浏览

c# - C# 正则表达式中环视的效率。如果可以,我应该避免它们吗?

每个人!我对正则表达式很陌生,但我喜欢它们,很多!

如果你愿意,可以叫我挑剔,但我真的很想知道如果我有选择的话,我是否应该避免使用前瞻和后瞻。

例如,下面的两个命令做同样的事情,一个使用lookbehind,另一个不使用。

你会用哪一个?哪个更有效率?

感谢您的回答!