我有这个字符串:
The.Soundcraft.Si.Performer.1.is.digital.19.3.inch.mix.actually this is. a test
在这个字符串中,我想用.
替换.
字符前后的字符The. Soundcraft. Si. Performer. 1.is. digital. 19.3. inch. mix. actually this is. a test
(所以尾随空格)除非前导或尾随字符是数字或空格。< / p>
最终结果将是:
([^0-9 ])\.([^0-9 ])
我在这里测试了我的正则表达式dim description as String = "The.Soundcraft.Si.Performer.1.is.digital.19.3.inch.mix.actually this is. a test"
description = Regex.Replace(description, "([^0-9 ])\.([^0-9 ])", ". ")
:http://www.regexr.com/它似乎与我需要替换的所有部分相匹配。
所以我编码了这个:
//app.UseFacebookAuthentication(
// appId: "",
// appSecret: "");
但没有任何反应。我错过了什么?
答案 0 :(得分:1)
您可以使用
description = Regex.Replace(description, "\b\.\b", ". ")
为什么会有效?
单词边界\b
可以有4个含义,具体取决于上下文:
(?<!\w)
在\b
+字母([\p{L}\p{N}_]
)(?<!\W)
在\b
+非字母([^\p{L}\p{N}_]
)(?!\w)
在类似字母的构造中([\p{L}\p{N}_]
)+ \b
(?!\W)
在非字母字母([^\p{L}\p{N}_]
)+ \b
的构造中。在您的情况下,第2和第4个案例适用:.
是非单词字符,因此\b\.\b
与(?<!\W)\.(?!\W)
相同:匹配附带的点字符。
EDGE CASE :
如果您不想替换.
旁边的_
,则需要从字边界排除_
,这就是它的外观:< / p>
(?<![^\p{L}\p{N}])\.(?![^\p{L}\p{N}])
请参阅demo