繁体   English   中英

正则表达式查找空白前缀不存在,但不包含匹配项中的字符?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM