帮助在Delphi XE中设置RegularExpressions

时间:2010-10-22 12:55:41

标签: regex delphi delphi-xe

我想为check1设置RegularExpressions。

string1可以更改为:

  • 字符串1:= 'D1413578; 1038'
  • 字符串1:= 'D2; 11'
  • 字符串1:= 'D16; 01'
  • ,...,
仅在string1中

字符'D'和分号始终存在。

我设置了RegularExpressions1:='\ b(D#\;#)\ b';

但是RegularExpressions1无法正确检查string1。

在vb6中,这个RegularExpressions1 =“D#;#”。但我不知道那是在Delphi中吗?

2 个答案:

答案 0 :(得分:3)

尝试

\bD\d*;\d*

\d*表示“零或更多数字”。

顺便说一下,我已经省略了第二个\b,否则如果分号后面没有数字,则匹配将失败(并且你说数字是可选的)。

如果通过“检查”表示“验证”整个字符串,则使用

^D\d*;\d*$

所有这些都假定D;后只允许数字。如果情况并非如此,请编辑您的问题以澄清。

答案 1 :(得分:0)

假设两个数字至少需要一个数字,请使用此正则表达式:

\AD\d+;\d+\z

我更喜欢使用\A\z代替^$来匹配字符串的开头和结尾,因为它们始终只执行此操作。

在Delphi XE中,您可以在一行代码中检查此正则表达式是否与string1匹配:

if TRegEx.IsMatch(string1, '\AD\d+;\d+\z') then ...

如果要使用多个字符串,请将TRegEx:

实例化

无功   RE:TRegEx;

RegEx.Create( '\ AD \ d +; \ d + \ Z'); 对于ListOfStrings中的string1做   如果RE.IsMatch(string1)则......