2014-04-16 48 views
2

如果它们符合模式,我想用#13#10替换大字符串中的所有字符。德尔福TRegEx替换

但是如何让我的价值'[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]); 
+0

你的模式是什么? '@'然后是7位数字,然后是文字'$'? – Robin

+0

是的,就是这样。 –

回答

4

你可以这样说:

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

进行分解:

  • [0-9]{7}装置7只出现一个数字的。
  • 该parens (...)用于捕获7位数字和$
  • 替换字符串中的\1展开为捕获的字符串。

虽然罗宾的方法更好!

+2

我宁愿你接受罗宾的答案。这个比较好。非常感谢你! –

13

要执行你的支票,你可以使用正前瞻:

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

(?=...)将检查@后面是你想要的东西,而不会选择这些后续数字。