如何根据条件拆分正则表达式

时间:2013-04-11 15:18:41

标签: java regex annotations

我希望匹配文本中具有单位nm或μm的所有值。下面是匹配20 nm或20 nm

的正则表达式
public Pattern Value = Pattern.compile("\\d*\\.?\\d*(\\s?[nNμµ][mM])");

如果它具有单位nm或μm

,我如何对其进行编程以仅匹配该值

2 个答案:

答案 0 :(得分:0)

您可以使用捕获组来捕获值:

public Pattern Value = Pattern.compile("(\\d*\\.?\\d*)(?:\\s?[nNμµ][mM])");

此处的值将包含在第一组中。

您也可以使用lookarounds

public Pattern Value = Pattern.compile("\\d*\\.?\\d*(?=\\s?[nNμµ][mM])");

此处您只会匹配该值。

答案 1 :(得分:0)

使用lookahead assertions

public Pattern Value = Pattern.compile("(?i)\\d+\\.?\\d*(?=\\s*[nµ]m)");

此外,至少要强制其中一个数字。