我试图用"替换"从字符串中所有非ASCII字符(重音符号,符号),然后替换所有以数字结尾的单词。
我认为r' \ W | \ b [^ a-z] * [^ a-z] \ b'会这样做,因为我认为它说"删除非ASCII字符,或删除以0或更多非字母开头并以非字母结尾的整个单词"。非字母我指的是与[a-z]不匹配的每一个字母。然而," hey2"," a2"," 1a3"仍在那里
#remove all these words:
re.sub(r'\W|\b[^a-z]*[^a-z]\b',' ', "1 123 - hey2 a2 1a3 ".lower())
>>>' hey2 a2 1a3 '
#keep all these words:
re.sub(r'\W|\b[^a-z]*[^a-z]\b',' ', "1st first a2a 2bb esta' ".lower())
>>>'1st first a2a 2bb esta ' #This works
我错过了什么?
答案 0 :(得分:1)
删除以数字
结尾的非unicode字符和单词
似乎你想要删除任何非单词字符(与\W
模式匹配)和任何“单词”(一系列字母/数字/ _
,\w
模式)以数字结尾。
所以,你可以使用
re.sub(r'\W|\b\w*\d\b', ' ', s)
请注意,如果您在Python 2.x中处理Unicode字符串,则需要传递re.UNICODE
标志以使\W
和\w
识别Unicode。
模式详情
\W
- 一个非单词字符(任何不是字母,数字或_
的字符)|
- 或\b
- 领先的单词边界\w*
- 零个或多个(*
)单词字符\d
- 数字\b
- 一个尾随字边界。请注意,如果您要将_
字符视为非字词字符,请将\W
替换为[\W_]
,将\w
替换为[^\W_]
。< / p>
答案 1 :(得分:0)
你错过了一个(点)。之前 ”*”。
“。*”表示任意字符的数量为0或更多。
Yii::$app->user->identity->getId();