[英]Regex program to print words from sentences which contain 2 numbers and they are not next to each other
正则表达式程序从包含 2 个数字且它们彼此不相邻的句子中打印单词。 我制作了一个打印它们的正则表达式程序,但在某些情况下,它们打印出带有彼此相邻的数字的单词。
import re
tekst = str(input("Unesi tekst: "))
pattern = re.findall(r'\b(?=\d*[^\W\d])[^\W\d]*\d[^\W\d]*\d\w*\b',tekst)
print(pattern)
输入:
2test2
te22st
2tes2t
t2est2
输出:
2test2
2tes2t
t2est2
使用re.findall
:
[i for i in tekst.split() if len(re.findall("\d+", i)) == 2]
输出:
['2test2', '2tes2t', 't2est2']
您可以更新模式以重复中间否定字符类 1+ 次,以防止 2 位数字彼此相邻。
\b(?=\d*[^\W\d])[^\W\d]*\d[^\W\d]+\d[^\W\d]*\b
解释
\\b
词边界(?=\\d*[^\\W\\d])
断言至少一个不是数字的字符字符[^\\W\\d]*
匹配 0+ 次一个没有数字的字符字符\\d
匹配第一个数字[^\\W\\d]1
匹配 1+ 次没有数字的字符字符以防止它们彼此相邻\\d
匹配第二个数字[^\\W\\d]*
匹配 0+ 次一个没有数字的字符字符\\b
词边界
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.