Python Regex:在匹配的字符串中查找字符



我想在python中使用正则表达式来查找所有以开头的单词。

然后,正则表达式应该在匹配的单词中查找[,然后用下划线替换它。

这里有一个例子:

input_string = SomeText Word[0] Word[3] SomeText[123] SomeText[10] SomeText
output_string = SomeText Word_0] Word[3] SomeText_123] SomeText[10] SomeText

以下python代码用下划线替换方括号:

output_string = re.sub(<regex>, '_', input_string)

我写了这个正则表达式来查找以:开头的单词

\[^s]+

https://regex101.com/r/d4YO9K/1

但现在我不知道如何找到方括号。

有人能提出一些解决这个问题的想法吗?

您想要匹配:

r'((?:^| )\w*?['

并替换为:

r'1_`

它是第1组中的任何一个,后面跟一个"_"。

  1. (-第1组开始
  2. (?:^| )-匹配字符串或空格的开头
  3. \-匹配反斜杠
  4. w*?-非贪婪地匹配0个或多个单词字符
  5. )-第1组结束
  6. [-匹配[

请参阅Regex演示

请注意,您不应该将变量命名为input,它是内置函数的名称。

import re
s = 'SomeText Word[0] Word[3] SomeText[123] SomeText[10] SomeText'
output = re.sub(r'((?:^| )\w*?)[', r'1_', s)
print(output)

打印:

SomeText Word_0] Word[3] SomeText_123] SomeText[10] SomeText

您可以定义一个函数,该函数接受匹配对象并返回替换字符串:

def rep(m):
return m.group(0).replace("[", "_")

并将其作为替换参数传递给re.sub:

re.sub(r"\S+", rep, "abc \xyz[0] def")
'abc \xyz_0] def'

最新更新