[英]RegEx to find non-existence of white space prefix but not include the character in the match?
因此,我具有以下正则表达式,用于查找和添加空格:
(\S)(\()
因此,对于像“ SomeText(Somemoretext)”这样的字符串,我想将其更新为“ SomeText(Somemoretext)”,它与“ t(””匹配,因此我的替换从字符串中消除了“ t”,但效果不好。知道字符可能是什么,我只是想找到空白的不存在。
有没有更好的表达方式可以使用,还是有办法从返回的匹配项中排除找到的字符,以便我可以安全地替换而不捕获我不想替换的字符?
谢谢
如果您需要检测单词后特定字符(例如方括号)之前是否没有空格,该如何处理?
\b(?=[^\s])\(
这将检测words
([a-zA-z0-9_],后跟方括号,没有空格)。
(如果我正确解决了您的问题),则可以将full match
替换为(
,然后完全得到您所需要的。
如果您需要在任何类型的文本中(例如,文本可能non-word
,例如标点符号)在符号(如方括号)之前寻找缺失空格,则可能需要使用以下内容。
^(?:\S*)(\()(?:\S*)$
使用此方法时,您的结果将在group 1
,而不仅仅是full match
(如果匹配了一行,则现在包含整行)。
我发现lookarounds难以阅读,宁愿使用替代的替换字符串来代替:
var s = Regex.Replace("test1() test2()", @"(\S)\(", "$1 (");
Debug.Assert(s == "test1 () test2 ()");
$1
将来自正则表达式的第一个捕获组插入替换字符串,该替换字符串是左括号(
之前的非空格字符。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.