使用正则表达式(python)在(和)括号内对文本进行解译
我想删除“(not),(123),(j?)” 为什么使用正则表达式(python)在(和)括号内对文本进行解译,python,regex,Python,Regex,我想删除“(not),(123),(j?)” 为什么 strs = [ "I like to run head first into a wall (not)" "klsjlsk klsjdkls ,m s,mdn,mnsd,m (123)" "a b c d e f g h i (j?)" ] 不这样做以及正确的方法是什么?这是您需要使用的正则表达式print re.sub(r'\([^)]*\),'',strs[0])这是您需要使用的正则表达式print re.su
strs = [
"I like to run head first into a wall (not)"
"klsjlsk klsjdkls ,m s,mdn,mnsd,m (123)"
"a b c d e f g h i (j?)"
]
不这样做以及正确的方法是什么?这是您需要使用的正则表达式
print re.sub(r'\([^)]*\),'',strs[0])
这是您需要使用的正则表达式print re.sub(r'\([^)]*,'',strs[0])
考虑以下几点:
重新导入
strs=[
“我喜欢头先撞到墙上(不是)”,
"klsjlsk klsjdkls,ms,mdn,mnsd,m(123)",,
“a b c d e f g h i(j?)”
]
#空格(\s)
#开括号(\()
#anychar(.*)
#最小可能匹配(?)
#右括号(\)
模式=r'\s*\(.*?\)'
#使用新字符串列出理解
新=[re.sub(模式,”,strs[i]),用于范围内的i(len(strs))]
考虑以下几点:
重新导入
strs=[
“我喜欢头先撞到墙上(不是)”,
"klsjlsk klsjdkls,ms,mdn,mnsd,m(123)",,
“a b c d e f g h i(j?)”
]
#空格(\s)
#开括号(\()
#anychar(.*)
#最小可能匹配(?)
#右括号(\)
模式=r'\s*\(.*?\)'
#使用新字符串列出理解
新=[re.sub(模式,”,strs[i]),用于范围内的i(len(strs))]
您正在使用捕获组(括号外)捕获括号内的所有内容。但是,由于您没有重用捕获的数据,因此这是不必要的。如果您只想删除一行末尾的所有括号和封闭文本(我根据您提供的内容猜测),您可以这样做
re.sub(r' (\([*]\))$', '', strs(0))
例如:
如果删除括号前的空格也很重要,只需在开头使用\s
或\s+
你的不起作用,因为
[*]
没有按照你的想法去做。它正在查找文本*
。如果要查找任意数量的字符,请改用*
。您使用的是捕获组(括号外)来捕获括号内的所有内容。但是,由于您没有重用捕获的数据,因此这是不必要的。如果您只想删除一行末尾的所有括号和封闭文本(我根据您提供的内容猜测),您可以这样做
re.sub(r' (\([*]\))$', '', strs(0))
例如:
如果删除括号前的空格也很重要,只需在开头使用\s
或\s+
你的不起作用,因为
[*]
没有按照你的想法去做。它正在查找文本*
。如果您想查找任意数量的字符,请使用*
。进行简单的正则表达式测试检查:应该是re.sub(r'(\.+)\)$,'',strs[0])
顺便说一句,您的代码中有(0)。要进行简单的正则表达式测试检查,应该是re.sub(r'(\.+)\)$,'',strs[0])
在你的代码中。你能帮我分解一下吗,我很难理解那里发生了什么。@runningmanjoe它检查括号\(
后面跟任何不是括号的东西[^)]
重复0次或更多次*
,然后跟一个括号\)
你能帮我分解一下吗,我很难理解那里发生了什么。@runningmanjoe它检查括号\(
后跟任何非括号的内容[^)]
重复0次或更长时间*
,然后后跟括号\)
添加\s
很好。您可以使用\s*
将其设置为可选或多个。我同意您的建议,我将编辑,thnx@TotoGood以添加\s
。您可以使用\s*
将其设置为可选或多个。我同意您的建议,我将编辑,thnx@Toto