问题标签 [lookaround]

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

java - Java 正则表达式在可变长度标记之间排除一个单词(负环视)

我的目的是发现患者是否患有高血压。

这应该匹配:

患者患有糖尿病、高胆固醇和高血压。

患者糖尿病、高胆固醇和高血压呈阳性。

这不应该匹配:

患者没有糖尿病、高胆固醇或高血压。

已知患者没有糖尿病、高胆固醇或高血压。

我可以使用它来匹配两者:

但是,这在http://gskinner.com/RegExr/上不起作用(仍然匹配两者):

那么,如何排除“患者”和“高血压”之间包含“否”的匹配项?

请记住,“患者”、“否”和“高血压”之间可能有任意数量的字符。

非常感谢!!!

PS:我知道否定查找可能比这更复杂,但是,就我目前的努力而言,仅识别表示否定的单词就足够了。

0 投票
2 回答
76 浏览

php - 正则表达式:使用前瞻断言作为条件

我相信下面的两个正则表达式做同样的事情:

两者都只匹配第二个单词 (aaa):

zzz aaa bbb

我想知道在性能或任何其他方面之间是否有任何区别,或者出于某种原因是否比另一个更可取。

编辑:

确实,上面的模式匹配不同的东西(“aaa”和“aaa bbb”)。对不起,我的错。

我原来的模式是:

我最初的示例主题是:

像那样,我认为这两种模式都匹配“aaa”。

我知道第二个更快。还有其他区别吗?

0 投票
2 回答
1163 浏览

xml - 正则表达式,查找具有某些子节点的 xml 节点(在 Sublime 文本中)

我正在寻找正则表达式(用于 Sublime Text)来选择具有特定子元素的 xml 元素。我可以用这个选择所有元素:

这很完美,但我想找到包含的块

而不是其中包含:

所以我需要一个lookaraound(向前看或向后看)或条件表达式,但我做错了。当我尝试:

它在一次选择中选择了比它应该选择的更多元素。

这似乎很简单,但我无法在任何地方找到正确的答案。

0 投票
1 回答
751 浏览

regex - 正则表达式:比赛之前/之后的环视

考虑这段文字:100 dollars

如果我想匹配100(使用前瞻),我写了这个:

据我所知,该模式意味着:仅当(如果)后跟时才找到 3 位数字 " dollars"

但是可以以一种奇怪的方式使用前瞻;再次匹配100上述文本:

这怎么可能?我们如何解释前瞻的第二次使用?

0 投票
1 回答
722 浏览

regex - VBA 正则表达式向前看

enter code here我正在尝试识别“。”之后可能附加到端口的数字。
端口的格式是 ge-#/#/#(可以是 ge-0/0/n,其中 0 <= n <=23,或 ge-0/1/m,其中 0 <= m <= 3)

例子:

结果应该是“2014”

目前,我正在使用以下 RegEx 来识别端口:

我的问题是为端口创建检查,但只打印它之后的内容。我尝试简单地开始然后折腾端口代码的结果很差。如果有人可以帮助创建我正在寻找的 RegEx 并解释它如何在不打印的情况下检查端口,他们将不胜感激。

谢谢

编辑:
只有模式可以改变来解决这个问题。这是因为模式被放入一个 txt 文件中,该文件将由 vba 宏读取。vba 代码不能修改。

0 投票
1 回答
84 浏览

regex - 正则表达式使用积极的前瞻

我的源数据文本如下所示:

我需要对其进行解析,以便最终结果如下所示(每行中包含适当的“测试”字段):

这是我开始并正确捕获字段的内容:

我知道我需要使用环视来捕获并包含每行的“测试”字段。

所以添加了这样的东西(使用积极的前瞻)......</p>

这似乎很接近,但并未产生所有数据行,而是仅产生包含测试值的最后一行数据,就好像它正在消耗前瞻行一样。

将该表达式及其捕获的组输入到 .NET 应用程序中,该应用程序将这些捕获的组作为字段插入到数据库表中。字段数始终是静态的(上例中为 4;field1=f1,field2=f2,field3=f3,field4=test),但记录数是可变的。

任何指导将不胜感激。

0 投票
2 回答
2352 浏览

regex - 使用正则表达式 PIG 从 URL 中提取数字字符串

我正在使用 PIG 生成最近访问过的 URL 列表。在每个 URL 中,都有一串数字代表访问的产品页面。我正在尝试使用一个regex_extract_all()函数来仅提取长度为 6-8 的数字字符串。数字串可以直接在后面找到jobs2/view/,通常以 . 结尾,+&cd但有时也可能以 . 结尾)

以下是一些示例 URL:

( http://a.com/search?q=cache:QD7vZRHkPQoJ:ca.xyz.com/jobs2/view/17069404+&cd=1&hl=en&ct=clnk&gl=ca ) ( http://a.com/search? q=cache:G9323j2oNbAJ:ca.xyz.com/jobs2/view/5977065+&cd=1&hl=en&ct=clnk&gl=ca ) ( http://a.com/search?q=cache:aNspmG11qAJ:hk.xyz.com /jobs2/view/16988928+&cd=2&hl=zh-TW&ct=clnk&gl=hk ) ( http://a.com/search?q=cache:aNspmG11AJ:hk.xyz.com/jobs2/view/16988928+&cd= 2&hl=zh-TW&ct=clnk&gl=hk ) ( http://a.com/search?q=cache:aNspmG11qAJ:hk.xyz.com/jobs2/view/16988928+&cd=2&hl=zh-TW&ct=cl k&gl=香港)

这是我正在使用的当前正则表达式:

我也尝试过其他形式,例如:

'[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]', 'view.([0-9]+)', 'view\/([\d]+)\+',

'[0-9][0-9][0-9]+', 和 '[0-9][0-9][0-9]*'; 这些都不起作用。

任何人都可以在这里提供帮助或有其他方法吗?

非常感谢,MM

0 投票
3 回答
920 浏览

regex - 正则表达式环顾四周 - Java

我继承了一些正则表达式并试图理解它为什么匹配某些模式。以下正则表达式基于积极的前瞻断言和匹配文本,如bear grylls episode. 这是有道理的。但它也匹配episode后面跟着的文本bear grylls,例如episode bear grylls。我在正则表达式中看不到任何向后看的参考。最后是.*?让它向后看吗?

0 投票
1 回答
1098 浏览

robotframework - 机器人框架 - “环视”正则表达式

我试图找到一种方法让机器人框架在日志文件中的已知字符串之间抓取文本。我想用它来获取变量(如 IP 地址),以通过我的测试计划传递它们。

示例日志:(注意不同的时间戳,我无法控制这些,开发人员似乎出于某种原因喜欢更改它们。)

[2014-10-11T22:34:00.11] TCPConnect - 在端口 8030 上连接到 192.168.21.139。

[2014-10-11 22:34:00.11] TCPConnect - 在端口 9718 上连接到 devbox01。

[2014-10-11] [22:34:00.11] TCPConnect - 在端口 8712 上连接到 devbox01.here.local.net。

如果我使用关键字“获取匹配正则表达式的行”和正则表达式:

我得到:

错误:后视需要固定宽度的模式

我希望在“连接到”和“端口”之间获得 IP 地址、主机名和其他任何内容,但事实并非如此。我知道这与 python 2.6 有关,但是显然 2.7 将包含此功能;我希望在当前版本中解决这个问题。

有人有想法么?

0 投票
0 回答
38 浏览

regex - VBScript RegEx Flavor Lookaround Method 是否存在文本文件超过 5MB 的问题?

我想知道为什么以下正则表达式:

和:

似乎在以下测试字符串上工作得很好:

但是,当我对超过 5MB 的文件使用相同类型的表达式时,它会失败。

我正在使用的 VBScript 如下:

我正在使用的编辑器在这里:http ://www.regexr.com/

问:你想做什么?

答:我希望能够基于捕获两个字符串之间任何内容的智能正则表达式代码将任何文本文件拆分为多个字符串块。第一个字符串确定器是固定术语,即“CHAPTER 1”,但第二个字符串确定器是不固定的。第二个字符串确定器是不固定的和变化的,但它是已知的。可以将其放入数组中,然后进行解析。我遇到的问题是 Lookaround (?=) 似乎要么逃脱要么陷入循环。我一直在玩“|” 运算符,正如您在此 OP 开头的第二个 RegEx 中看到的那样。我正在使用的测试文件似乎解析得很好。没问题。但是我正在使用的更大的文件......我不知道。只是出了点问题。