Delphi TRegEx替换

Hug*_*hem 3 regex delphi

如果匹配模式,我想用#13#10替换大字符串中所有字符@的字符.

但是如何得到我的模式'[0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9]'的值在我的替代领域?

pattern := '@' + '[0-9][0-9][0-9][0-9][0-9][0-9][0-9]' + '\$';
replacement := #13#10 + '[0-9][0-9][0-9][0-9][0-9][0-9][0-9]' + '\$';
ts.Text := TRegEx.Replace(AString, pattern, replacement, [roIgnoreCase]);
Run Code Online (Sandbox Code Playgroud)

Rob*_*bin 16

要执行检查,您可以使用积极的前瞻:

pattern := '@(?=[0-9]{7}\$)'
replacement := #13#10
Run Code Online (Sandbox Code Playgroud)

(?=...)会检查@后跟你想要什么,而不会选择这些后续数字.


Dav*_*nan 5

你可以这样做:

TRegEx.Replace(s, '@([0-9]{7}\$)', #13#10+'\1')
Run Code Online (Sandbox Code Playgroud)

要打破它:

  • [0-9]{7} 表示7次出现的数字.
  • parens (...)用于捕获7位数字和$.
  • \1替换字符串扩展到捕获的字符串.

虽然罗宾的方法更好!

  • 我宁愿你接受罗宾的回答.这个比较好.非常感谢你! (2认同)