我试图删除python中的所有特殊字符和数字,除了直接附加到单词的数字。你知道吗
我已经成功地做到了所有特殊字符和数字的情况下附加和不附加的话,如何做到这样的方式,附加的数字不匹配。你知道吗
以下是我所做的:
import regex as re
string = "win32 backdoor guid:64664646 DNS-lookup h0lla"
re.findall(r'[^\p{P}\p{S}\s\d]+', string.lower())
我得到了输出
win backdoor guid DNS lookup h lla
但我想得到:
win32 backdoor guid DNS lookup h0lla
要匹配字母数字字符串或仅匹配字母单词,可以将以下模式与
re
一起使用:参见regex demo。你知道吗
细节
(?:[^\W\d_]+\d|\d+[^\W\d_])[^\W_]*
-1+个字母后跟一个数字,或者1+个数字后跟一个字母,然后是0+个字母/数字|
-或[^\W\d_]+
-任何1+Unicode字母注意它相当于^{} pattern posted by PJProudhon,匹配任何1+个字母数字字符块,其中至少有1个字母。你知道吗
你可以试试^{}
分解:
对于初学者:
[^\W]
是典型的双反结构。这里您想要匹配任何不是字母数字的字符或_
(\W
是\w
的否定,它匹配任何字母数字字符加上_
-公共等价物[a-zA-Z0-9_]
)。你知道吗它揭示了在这里写作的有用之处:
[^\W_]
与任何非[字母数字或_
]且非_
的字符匹配。你知道吗[^\W\d_]
与任何非[字母数字或_
]且非数字(\d
)且非_
的字符匹配。你知道吗进一步阅读here。你知道吗
编辑:
当
_
也被认为是一个单词分隔符时,只需跳过单词边界即可切换该字符,并使用\d*[^\W\d_][^\W_]*
。星运算符的默认贪婪度将确保所有相关字符实际匹配。你知道吗
Demo。你知道吗
请尝试使用以下正则表达式:
您可以从这里展开它,例如在第一个和最后一个集合上翻转*和+,以相等地捕获字符串,如“win32”和“01ex”。你知道吗
相关问题 更多 >
编程相关推荐