我正在尝试在 Perl 中编写一个正则表达式,该表达式适用于混合了文本和帐号的文本文件。我想做的是重新格式化帐号。.*
当给定行上有多个匹配项时,我遇到了一个问题,即在帐号的任一侧进行匹配。我已经进行了一些搜索,但找不到任何答案,所以我希望有人可以向我解释我的正则表达式有什么问题,这样我就可以在将来避免这个陷阱。
while(<>) {
s/(.*)\b([0-9]+)\b(.*)/$1xxx\-$2$3/g;
print;
}
将xxx-
被帐户标识符替换,但在我让它工作之前,我只有x
's.
我遇到的问题是,只有最后一次出现被替换,而不是所有出现。
例如,一个简单的示例行:
First Part 223456 Third Part Fourth Part 113456 Fifth Part Sixth Part
我希望:
First Part xxx-223456 Third Part Fourth Part xxx-113456 Fifth Part Sixth Part
但我只得到:
First Part 223456 Third Part Fourth Part xxx-113456 Fifth Part Sixth Part
如果我在捕获组中包含其他元字符它可以工作,我将它缩小到.*
问题,但我不能保证文件中的内容,所以我需要匹配所有内容。只有在同一行有多个帐号时才会发生这种情况;如果帐号出现在多行上,它工作正常。
任何反馈将不胜感激