繁体   English   中英

如何编写正则表达式以匹配自由文本和空格?

[英]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})

http://gskinner.com/RegExr/?2vo43

我建议将(\\s+)部分更改为(\\s{2,}) ,以确保存在重复的空格,而不仅仅是单个字符。

您可能还想添加一些行开始/结束锚点,以防止通配符“吃掉”太多数据。 为了平衡平衡并使它们在换行符处匹配,请将m标志添加到正则表达式中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM