[英]regular expressions in java
我有一个问题,我需要标记我的字符串(使用Java代码),以便将其拆分为String数组。 这个数组中的每个标记都应该是单词,数字或格式(23 x 34 x 56等)的尺寸。我尝试将其编码为:
String[] split_text = text.split("\\s | (\\d{3},)*\\d{3}([.]\\d)* x (\\d{3},)*\\d{3}([.]\\d)* | \\d*([.]\\d)* x \\d*([.]\\d)*");
但是,这给出了语法错误。 谁能告诉我如何使用正则表达式做到这一点,以及在Java中表达正则表达式的方式是否存在问题?
要将任意一对数字与点或逗号和中间的x匹配,可以执行以下操作:
(\d*(?:[.,]\d+)* x \d*(?:[.,]\d+)*)
或成对和三联:
(\d*(?:[.,]\d+)*(?: x \d*(?:[.,]\d+)*){1,2})
所以也许那就是你的表情:
((?:\d*(?:[.,]\d+)*(?: x \d*(?:[.,]\d+)*){1,2})|\s|\w+)
参见此处: http : //rubular.com/r/snAiI7GMT7-一个很好的测试站点。
您可能希望将\\w
替换为\\w
\\p{L}
以覆盖Java中的所有unicode字。
我没有在您的正则表达式中看到语法错误,但是有一些问题:
\\.
匹配文字点。 (\\d{3},)*\\d{3}([.]\\\\d)*
将匹配123,456,789.1.1.1.1
但不1,234.67
。 那真的是您想要的吗? <number> x <number>
将仅匹配数字对,而不是示例中的三胞胎。 我认为最好稍微更新一下规格。 您到底想要/不想要什么。 举几个例子。 想想极端情况(是否允许前导零?是否可以像.12
一样丢弃? 1.4E-45
等如何)...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.