繁体   English   中英

Java中的正则表达式

[英]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字。

String.split返回一个字符串数组

split_text为数组:

String[] split_text = ...
      ^^

我没有在您的正则表达式中看到语法错误,但是有一些问题:

  • 空格在正则表达式中重要,因此请不要在不希望在字符串中出现空格的正则表达式中放置空格。
  • 使用\\. 匹配文字点。
  • (\\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.

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