如果内容包含任何非数字,则使用正则表达式删除括号和内容
Using Regex to remove brackets and contents if the contents contain any non digits
如果 [] 中至少有一个非数字,我想删除 [] 和内容。
输入:Tag1[aA], Tag2[55].AA[*], Tag3[A1];
输出:Tag1, Tag2[55].AA, Tag3;
我试过下面的方法,但它只适用于括号内的完全匹配。
import re
line = "'Tag1[aA], Tag2[55].AA[*], Tag3[A1];"
# removes the [] if contents contain non digits only
pattern = r'\[\D+\]'
s = re.sub(pattern, '', line)
print(s)
> "'Tag1, Tag2[55].AA, Tag3[A1];"
import re
line = "'Tag1[aA], Tag2[55].AA[*], Tag3[A1];"
re.sub(r'\[[a-zA-Z*]{1,}[\d]{0,}\]', r'', line)
使用这段代码,我也考虑了一些额外的情况。
import re
line = "'Tag1[aA], Tag2[55].AA[*], Tag3[A1],Tag4[34],Tag5[1B];"
# removes the [] if contents contain non digits only
pattern = r'(\[\D.+?\]?|\[.\D.+?\]?)'
s = re.sub(pattern, '', line)
print(s)
输出:
'Tag1, Tag2[55].AA, Tag3,Tag4[34],Tag5;
您可以使用:
\[[^][]*[^][\d][^][]*]
模式匹配:
\[
匹配 [
[^][\d]*
可选择匹配除 [
和 ]
之外的任何字符
[^][\d]
匹配 [
]
或数字 以外的单个字符
[^][\d]*
可选择匹配除 [
和 ]
之外的任何字符
]
匹配 ]
import re
print(re.sub(r"\[[^][]*[^][\d][^][]*]", "", "Tag1[aA], Tag2[55].AA[*], Tag3[A1];"))
输出
Tag1, Tag2[55].AA, Tag3;
如果 [] 中至少有一个非数字,我想删除 [] 和内容。
输入:Tag1[aA], Tag2[55].AA[*], Tag3[A1];
输出:Tag1, Tag2[55].AA, Tag3;
我试过下面的方法,但它只适用于括号内的完全匹配。
import re
line = "'Tag1[aA], Tag2[55].AA[*], Tag3[A1];"
# removes the [] if contents contain non digits only
pattern = r'\[\D+\]'
s = re.sub(pattern, '', line)
print(s)
> "'Tag1, Tag2[55].AA, Tag3[A1];"
import re
line = "'Tag1[aA], Tag2[55].AA[*], Tag3[A1];"
re.sub(r'\[[a-zA-Z*]{1,}[\d]{0,}\]', r'', line)
使用这段代码,我也考虑了一些额外的情况。
import re
line = "'Tag1[aA], Tag2[55].AA[*], Tag3[A1],Tag4[34],Tag5[1B];"
# removes the [] if contents contain non digits only
pattern = r'(\[\D.+?\]?|\[.\D.+?\]?)'
s = re.sub(pattern, '', line)
print(s)
输出:
'Tag1, Tag2[55].AA, Tag3,Tag4[34],Tag5;
您可以使用:
\[[^][]*[^][\d][^][]*]
模式匹配:
\[
匹配[
[^][\d]*
可选择匹配除[
和]
之外的任何字符
[^][\d]
匹配[
]
或数字 以外的单个字符
[^][\d]*
可选择匹配除[
和]
之外的任何字符
]
匹配]
import re
print(re.sub(r"\[[^][]*[^][\d][^][]*]", "", "Tag1[aA], Tag2[55].AA[*], Tag3[A1];"))
输出
Tag1, Tag2[55].AA, Tag3;