![](/img/trans.png)
[英]How can I write a regular expression to match lines not ending with a phrase?
[英]How to can I write a regular expression to match free-text followed by whitespace?
对不起,标题不好,但要排成一排有点麻烦。
我的数据类似于以下几行(每行分别进行评估):
JOHNNY BE GOOD 2.55
Rubber Ducky (2012) 123.71
International: INT'L 29.12
我正在尝试将它们拆分如下:
[JOHNNY BE GOOD][ ][2.55]
[Rubber Ducky (2012)][ ][123.71]
[International: INT'L][ ][29.12]
也就是说,从左到右,尽可能多的文本(包括空格),然后是任何尾随空格,然后是带有2个小数位的十进制数字。
到目前为止,我具有以下表达式,但是我的空白不是用文本本身捕获的:
/(.*)(\s+)([0-9]+\.[0-9]{2})/
我究竟做错了什么?
谢谢!
您的(.*)
贪婪,即正在使用所有可能的字符。 尝试使用惰性运算符?
:
/(.*?)(\s+)([0-9]+\.[0-9]{2})/
还是:
/([^\s]*)(\s+)([0-9]+\.[0-9]{2})/
您已经很接近了,但是您正在使用.
匹配所有内容(包括空格)的字符。 只需将第一个捕获的组中的[^\\s]
添加到您的正则表达式中,使其看起来像这样
(.*[^\\s])(\\s+)([0-9]+\\.[0-9]{2})
我建议将(\\s+)
部分更改为(\\s{2,})
,以确保存在重复的空格,而不仅仅是单个字符。
您可能还想添加一些行开始/结束锚点,以防止通配符“吃掉”太多数据。 为了平衡平衡并使它们在换行符处匹配,请将m
标志添加到正则表达式中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.