如何为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)';
我获得的结果包括第一个字符的小写字母。
文字示例: 首先,卖给我您的继承权。 你的呼吸闻起来像苹果。 “ 智慧暴击”。 你的地球像黄铜。 然后大卫来。 愤怒带来了剑的惩罚。
现在要匹配的项目是“智慧危机”和“大卫来了”。
答案 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
但是请注意,我实际上得到了四个匹配项:
Wisdom crieth
Your earth
David cometh
Wrath bringeth
根据我的阅读,Delphi的regex引擎是围绕PCRE构建的,这也是该演示所使用的。