我有一个名为test_text
的字符串,其中包含testcase的单词:
wk wkw wkk kwk kkw wkwk kwkw wkkw kwkk kwkwk wkwkwk wkwoowkwko www k kkk wkwkland
使用正则表达式,我想匹配所有被认为是印度尼西亚语的单词:
wk wkw wkk kwk kkw wkwk kwkw wkkw kwkk kwkwk wkwkwk
和排除(不限于)
wkwoowkwko www k kkk wkwkland
对于这个范围,我假设笑词是任何只包含字母w
和k
的词,每个字母至少包含一个
我试过:
import re
re.findall("(k*w+k+w*k*)+\s", test_text)
re.findall("k?(?:w{0,2}k{0,2}w{1,2})+k\s?", test_text)
re.findall("w*[Ww]\w*k+\s", test_text)
但似乎没有什么能与所有测试用例相匹配
\b
以确保仅匹配整个单词(?:wk|kw)
以确保匹配字中至少有一个kw
或wk
findall
只提供捕获组内匹配的文本[wk]*
以获取其余字符我使用列表理解来暂时解决这个问题,假设笑词只包含
w
和k
:另一种选择是使用正向前瞻来为其中一个断言,并确保匹配另一个
解释
\b
字边界(?=[wk]*w)
在右边断言一个w
字符w*k
匹配0+次aw
,然后确保匹配ak
[wk]*
匹配0+次w
或k
\b
字边界Regex demoPython demo
比如说
输出
相关问题 更多 >
编程相关推荐