我正在处理一个问题,例如,有一个句子:“今天_asf是null_word day__和__bla__bla ”。我想得到的是一个句子,其中所有的_都用空格代替,但null_word中除外。因此,输出语句应如下所示:“今天asf是null_word日,bla bla”。
为此,我编写了一个redux表达式:
(\w*((?!null_word)\b\S+)[_]+\w*)
Run Code Online (Sandbox Code Playgroud)
此表达式选择所有使用_ char的单词,并排除null_word。但是现在,如何从这些组中选择所有_字符?
我尝试用以下方法将它们分开:
(\w*((?!null_word)\b\S+)[_]+\w*)[_]
Run Code Online (Sandbox Code Playgroud)
但示例结果是:day__
谢谢您的帮助!
您可以在后面使用否定的后缀来断言左侧直接不为null
(?<!\bnull)_+
Run Code Online (Sandbox Code Playgroud)
(?<! 负向后看,断言直接在左侧的不是
\bnull 匹配单词边界,后跟 null) 往后看_+ 比赛1次以下,在替换中使用空格。
如果要精确保留,null_word也可以在捕获组中将其匹配以保留它,并匹配下划线以将其删除。
然后在替换使用捕获组1中。
(\bnull_word\b)|_+
Run Code Online (Sandbox Code Playgroud)