Delphi TRegEx替换

时间:2014-04-16 09:14:39

标签: 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]);

2 个答案:

答案 0 :(得分:15)

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

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

(?=...)会检查@后面是您想要的内容,而不会选择以下数字。

答案 1 :(得分:5)

你可以这样做:

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

要打破它:

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

虽然罗宾的做法更好!