Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用正则表达式(python)在(和)括号内对文本进行解译_Python_Regex - Fatal编程技术网

使用正则表达式(python)在(和)括号内对文本进行解译

使用正则表达式(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

我想删除“(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.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