我要匹配像一個正則表達式的特定字符的右側:匹配一切
.+|(.+)
但有時輸入是這樣的:
.+|.+|.+|.+|.+
換句話說,我不知道輸入字符串中有多少個管道字符|
,但我知道我想提取最右邊的|
右側的任何內容。
我要匹配像一個正則表達式的特定字符的右側:匹配一切
.+|(.+)
但有時輸入是這樣的:
.+|.+|.+|.+|.+
換句話說,我不知道輸入字符串中有多少個管道字符|
,但我知道我想提取最右邊的|
右側的任何內容。
而不是使用.
的,使用一個字符類匹配其他任何字符比|
:
^.+\|([^|]+)$
如果OP想要在最右邊的'|'後面的所有內容,爲什麼後面會有'|'個字符? –
不會有任何。 '[^ |]'匹配除'|'以外的任何字符。 – pobrelkey
我的觀點是它不是必需的。 –
您可以はNT使用^.+\|([^|]+).*$
,這在字符串結尾的情況下|,將捕獲像這樣:
.+|.+|.+|.+|.+|
捕獲.+
其他建議不否定|擷.+|
考慮下面的正則表達式...
\|(\.\+)$
祝您好運!
換句話說,我不知道
|
多少管道字符輸入字符串,但我知道我想提取無論是最右邊的|
你可以權使用以下:
[^|]+$
正則表達式:
[^|]+ any character except: '|' (1 or more times)
$ before an optional \n, and the end of the string
採用0
因此,例如grep的:
echo ".+|.+|.+|.+|foo" | grep -Eo '[^|]+$'
# => 'foo'
你也可以使用一個班輪做到這一點,例如:
perl -nle 'print $_ for (split /\|/)[-1]' file
或使用這種簡單的模式([^|]+)$
你例子實際的正則表達式或示例文本輸入? –