TDIPerlRegEx区分大小写匹配的正则表达式

时间:2018-09-23 14:51:35

标签: regex delphi

如何为TDIPerlRegEx创建正则表达式以区分大小写?我尝试过(?i-),但仍然找到以小字符开头的单词。

我想创建正则表达式来查找两个单词。 第一个单词必须以第一个字符大写开头,第二个单词的后两个字符为'th'。

TDIPerlRegEx.Create{$IFNDEF DI_No_RegEx_Component}(nil){$ENDIF};
  RegEx_Seek_1.MatchPattern := '(*UCP)(?m)(?i-)(?<=\W)[A-Z]\w{2,12}\W\w{3,12}th(?=\W)';

我获得的结果包括第一个字符的小写字母。

文字示例: 首先,卖给我您的继承权。 你的呼吸闻起来像苹果。 “ 智慧暴击”。 你的地球像黄铜。 然后大卫来。 愤怒带来了剑的惩罚。

现在要匹配的项目是“智慧危机”和“大卫来了”。

2 个答案:

答案 0 :(得分:2)

您有错字,禁用不区分大小写的方法是(?-i),而不是(?i-)

TDIPerlRegEx.Create{$IFNDEF DI_No_RegEx_Component}(nil){$ENDIF};
  RegEx_Seek_1.MatchPattern := '(*UCP)(?m)(?-i)(?<=\W)[A-Z]\w{2,12}\W\w{3,12}th(?=\W)';

答案 1 :(得分:0)

我不知道Delphi regex语法,但是以下模式似乎有效:

\b[A-Z]\S+\s\S*th\b

Demo

但是请注意,我实际上得到了四个匹配项:

Wisdom crieth
Your earth
David cometh
Wrath bringeth

根据我的阅读,Delphi的regex引擎是围绕PCRE构建的,这也是该演示所使用的。