匹配可能包含数字的字符串
Match strings that might include a number
我想匹配可能有也可能没有 1 个或多个数字的字符串。
测试数据:
110>=abcdef12
abcdef12>=110
110>=1332abcdef
1442abcdef>=110
110>=abcdef
abcdef>=110
所需匹配项:
abcdef12
abcdef12
1332abcdef
1442abcdef
abcdef
abcdef
我试过 [a-zA-Z_\d*]+
但这也与每一行的 110
匹配。有没有办法只排除数字?
我正在使用 python,但我认为这无关紧要。
查看您的样本数据,我会按照以下方式进行:
import re
data = '''110>=abcdef12
abcdef12>=110
110>=1332abcdef
1442abcdef>=110
110>=abcdef
abcdef>=110'''
found = re.findall(r'[a-zA-Z\d]*[a-zA-Z][a-zA-Z\d]*', data)
print(found)
输出
['abcdef12', 'abcdef12', '1332abcdef', '1442abcdef', 'abcdef', 'abcdef']
请注意,我没有把 _
放在模式中,因为我不知道 _
对你来说是数字还是 _
对你来说是字母,所以你需要相应地调整它。
我想匹配可能有也可能没有 1 个或多个数字的字符串。
测试数据:
110>=abcdef12
abcdef12>=110
110>=1332abcdef
1442abcdef>=110
110>=abcdef
abcdef>=110
所需匹配项:
abcdef12
abcdef12
1332abcdef
1442abcdef
abcdef
abcdef
我试过 [a-zA-Z_\d*]+
但这也与每一行的 110
匹配。有没有办法只排除数字?
我正在使用 python,但我认为这无关紧要。
查看您的样本数据,我会按照以下方式进行:
import re
data = '''110>=abcdef12
abcdef12>=110
110>=1332abcdef
1442abcdef>=110
110>=abcdef
abcdef>=110'''
found = re.findall(r'[a-zA-Z\d]*[a-zA-Z][a-zA-Z\d]*', data)
print(found)
输出
['abcdef12', 'abcdef12', '1332abcdef', '1442abcdef', 'abcdef', 'abcdef']
请注意,我没有把 _
放在模式中,因为我不知道 _
对你来说是数字还是 _
对你来说是字母,所以你需要相应地调整它。