![](/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.