![](/img/trans.png)
[英]Regex - Find successive 'words' containing at least 1 capital letter, one digit or one special character
[英]How to find words in a string containing at least one underscore and capital letters
我想匹配包含的字符串中的所有单词
例如(这是我得到的最好结果):
test_string = "test_string TEST_STRING TEST_string _TEST_STRING_ TESTSTRING ANOTHER_TEST_STRING"
p = re.compile("(\S*[A-Z_]\S*[_]\S*)")
p.search(test_string)
我想从搜索方法中获得的单词是:
但我得到了
谢谢
你的正则表达式(\\S*[A-Z_]\\S*[_]\\S*)
使用\\S*
来匹配非空白字符并重复那么多次,这样你就可以匹配__
或A_
您可以使用:
\b[A-Z]+_[A-Z_]*[A-Z]\b
说明
\\b
字边界 [AZ]+
匹配1+大写字符 _
匹配下划线 [A-Z_]*
匹配0次以上大写字母或下划线 [AZ]
匹配大写字母 \\b
字边界 re.search将返回正则表达式匹配的第一个位置。 您可以使用findall代替:
import re
test_string = "test_string TEST_STRING TEST_string _TEST_STRING_ TESTSTRING ANOTHER_TEST_STRING"
p = re.compile(r"\b[A-Z]+_[A-Z_]*[A-Z]\b")
print(re.findall(p,test_string))
结果
['TEST_STRING', 'ANOTHER_TEST_STRING']
这应该工作:
import re
regex = r"\b([A-Z]+(?:_[A-Z]+){1,})\b"
test_str = "test_string TEST_STRING TEST_string _TEST_STRING_ TESTSTRING ANOTHER_TEST_STRING"
matches = re.findall(regex, test_str, re.MULTILINE)
输出:
>>> matches
['TEST_STRING', 'ANOTHER_TEST_STRING']
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.