之前,我有一个像正则表达式匹配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“,但你的显然更好。谢谢! –