之前,我有一個像正則表達式匹配3個字符匹配
文字文字文字3424文本文本3423 美國50文本342文本
我想配什麼是行的文件50 US
(是的,美元)並最終提取該數字。 其他所有內容都會在不同的行中發生變化,可能會有更多的文字或更少的周圍,但是在每行中只有一個可以匹配的「US」錨點。
所以我想要做的是找到一種方法來匹配US
並獲得前面的3或4個字符。
任何想法?最好用sed/awk,但任何解決方案都可以。
之前,我有一個像正則表達式匹配3個字符匹配
文字文字文字3424文本文本3423 美國50文本342文本
我想配什麼是行的文件50 US
(是的,美元)並最終提取該數字。 其他所有內容都會在不同的行中發生變化,可能會有更多的文字或更少的周圍,但是在每行中只有一個可以匹配的「US」錨點。
所以我想要做的是找到一種方法來匹配US
並獲得前面的3或4個字符。
任何想法?最好用sed/awk,但任何解決方案都可以。
Perl的正則表達式(或任何理解非貪婪.*?
表達式)相比,是容易的sed此:
perl -pe 's/^.*?(\d+\.?\d*)\s*US.*$/$1/'
將處理像「11.23」,以及東西。
\d+ US
這應該工作,因爲美國只在字符串中出現一次。
我不認爲這將適用於「2000美國」或「2.99美國」 –
同意!它不會在這些情況下工作:) –
這是你可以在VBA正則表達式的味道,這也支持向前看符號用什麼:
" ((.+)(?= US))"
我正準備發佈我自己的解決方案,像'grep -o「[[:digit:]] \ {1,3 \} US這樣的醜陋的東西」file | cut -d 「」-f 1「,但你的顯然更好。謝謝! –