我想找到所有的話,所有的全部大寫,但是當我做grep的只有大寫單詞
grep -oP '\w*[A-Z]+\w*' *
我得到
words.py:StringValue
words.py:WORDS
words.py:WORDS_ANSWERED
words.py:Answered
words.py:True
,我所希望看到的
words.py:WORDS
words.py:WORDS_ANSWERED
問題
如何確保只輸出所有大寫字?
我想找到所有的話,所有的全部大寫,但是當我做grep的只有大寫單詞
grep -oP '\w*[A-Z]+\w*' *
我得到
words.py:StringValue
words.py:WORDS
words.py:WORDS_ANSWERED
words.py:Answered
words.py:True
,我所希望看到的
words.py:WORDS
words.py:WORDS_ANSWERED
問題
如何確保只輸出所有大寫字?
您可以使用此正則表達式用字邊界兩側,並通過使用[A-Z0-9_]
代替\w
:
grep -H -oP '\b[A-Z0-9_]*[A-Z]+[A-Z0-9_]*\b' *
words.py:WORDS
words.py:WORDS_ANSWERED
如果您不想在輸出中使用\w
,請不要將其包含在模式中。
grep -oP '[A-Z]+' *
要獲得預期的輸出,不過,你需要包括下劃線和單詞邊界:
grep -oP '\b[A-Z_0-9]+\b'
如果你想避免____
和類似的(?是他們共同的Python代碼),使用
grep -oP '\b[A-Z_0-9]*[A-Z][A-Z_0-9]*\b'
正則表達式認爲S
,A
和T
是大寫單詞。所以這取決於你如何定義大寫單詞。從你的例子看來,你正在尋找更像^[A-Z_]+$
的東西。或者,如果通過「大寫的單詞」你的意思是「沒有小寫字符」,[^a-z]+$
如果我這樣做, ,那麼'True'在輸出中變成'T'。 –
@JasmineLognnes:更新。 – choroba
它也會匹配沒有任何大寫字母的___。 – anubhava