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

Java 如何根据条件拆分正则表达式模式,java,regex,annotations,Java,Regex,Annotations,我希望匹配文本中以nm或µm为单位的所有值。下面是匹配20nm或20nm的正则表达式模式 public Pattern Value = Pattern.compile("\\d*\\.?\\d*(\\s?[nNμµ][mM])"); 如果其单位为nm或µm,如何编程使其仅与值匹配?您可以使用捕获组捕获值: public Pattern Value = Pattern.compile("(\\d*\\.?\\d*)(?:\\s?[nNμµ][mM])"); 此处的值将包含在第1组中 您还可以使

我希望匹配文本中以nm或µm为单位的所有值。下面是匹配20nm或20nm的正则表达式模式

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

如果其单位为nm或µm,如何编程使其仅与值匹配?您可以使用捕获组捕获值:

public Pattern Value = Pattern.compile("(\\d*\\.?\\d*)(?:\\s?[nNμµ][mM])");
此处的值将包含在第1组中

您还可以使用:

此处仅匹配该值。

使用:


另外,至少必须设置一个数字。

[nNμµ][mM]
更改为
[nµ][mM]
?或者我不明白你的意思…我想他希望输出是20纳米,而不是20纳米。
public Pattern Value = Pattern.compile("\\d*\\.?\\d*(?=\\s?[nNμµ][mM])");
public Pattern Value = Pattern.compile("(?i)\\d+\\.?\\d*(?=\\s*[nµ]m)");