regex - 如何在TDIPerlRegEx正则表达式中设置不友好选项

标签 regex delphi

我正在使用这样的模式:

RegEx_Seek.MatchPattern := '(*UCP)(?m)(?<=can he )(not ){0,2}\w\w+(?= )';


我想捕捉答案一词。但是我没有得到结果。不被捕获对我不介意。问题是未捕获答案。

help page
选项设置:


(?U)默认不贪婪(懒惰)(?x)扩展
(忽略空格)(?-...)未设置的选项


所以我尝试了(*CP)(?-U)(?m),但是没有编译该模式。

示例文字:
他们将他扶在肩上,背负他,将他安置在他的位置,他站了起来。他不能离开他的地方。是的,有人向他哭泣,但他不能回答,也不能救他脱离麻烦。

但是我正在使用更复杂的模式来搜索动词:

  RegEx_Seek_1.MatchPattern := '(*UCP)(?m)(?<=can he )(also |alone |myself |otherwise |who |not ){0,2}{0,2}\w\w+(?= )';


因此,从根本上讲,我不想更改模式的结构,而只是要禁用用于“非”字的贪婪选项。

最佳答案

您可以使用

(*UCP)\bcan\s+he\s+(?:not\s+){0,2}\K\w{2,}


请参见regex demo

细节


(*UCP)-PCRE动词,使所有速记都支持Unicode
\bcan-整个单词can\b是单词边界)
\s+-1+空格
he-he
\s+-1+空格
(?:not\s+){0,2}-0、1或2次出现的not,然后是1+个空格
\K-匹配重置运算符
\w{2,}-2个或更多单词字符。

关于regex - 如何在TDIPerlRegEx正则表达式中设置不友好选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52475190/

相关文章:

javascript - jQuery 中的正则表达式

delphi xe2 tms组件在x64平台下不可用

sql-server - TADOStoredProc 和 SQL Server 存储过程,参数作为默认值

macos - 德尔福 Mac OS X

delphi - 使用格式保存源代码(语法突出显示)

delphi - 将 'StepIt' 从 ProgressBar 替换为 cxProgressBar

java - 无法在 JSP 页面中运行匹配器方法

arrays - Perl next 如果正则表达式存储在数组中

php - TinyMce - 在最后一个标签末尾附加一个句点

python - pandas 数据帧上的正则表达式更改列名称,然后重新排列数据帧的格式