我正在使用RegEx.replace方法处理正则表达式,我遇到了一些我的模式不起作用的字符串。
对于字符串,例如:
"Av.Av. Italy"
"Av. Av. Italy"
"Av. . Av. Italy"
我正在尝试更换Av并删除所有额外的句号和空格,以便我使用这个正则表达式
rgx = new Regex(@"(Av\.).(Av\.)");
address = rgx.Replace(address, replacement);
[编辑] 我希望以上所有字符串最终只是说
"Av. Italy"
但它没有改变任何东西。
我还想使用正则表达式获取出现在某些字符串上的随机句点(例如:“word。other word”)和
rgx= new Regex(@"\b\.\b");
但这也没有做任何事......
我使用转义序列错了吗?
答案 0 :(得分:1)
首先,rgx = new Regex(@"(Av\.*[\s]*)*");
对您有用。对于第二个,你必须提供一个例子。
答案 1 :(得分:1)
你可以使用这个正则表达式:
rgx = new Regex(@".*(?:(Av\.)\s*)+");
address = rgx.Replace(address, replacement);
正则表达式采用任何字符,其中前面有Av.
,吃掉所有重复的Av.
和空格,并用一个Av.
替换那些(加上被吃掉的空格)正则表达式。
对于第二个,也许是那个?
rgx= new Regex(@" \.(?= )");
\b
匹配两个单词字符,即\w
和\W
之间,无论它们的顺序如何,\w
[a-zA-Z0-9_]
\W
.
\W
1}}正好相反。由于空格和\s
都位于\s
,因此您不会匹配。然后,我使用了空格而不是Word . Word
,因为WordWord
匹配换行符,我认为这不是你想要的:)
前瞻是为了防止移除两个空白区域。否则{{1}}将成为{{1}}。