2013-04-11 31 views
1

我想匹配文本中存在的單位爲nm或μm的所有值。下面是一個匹配20nm或20nm的如何根據條件拆分正則表達式模式

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

如何可以編程它僅匹配的值的正則表達式模式,如果它是具有單位納米或微米

+0

將'[nNμμ] [mM]'改爲'[nμ] [mM]'?或者我不明白你...... – AlexR 2013-04-11 15:22:13

+0

我認爲他希望輸出是20,而不是20nm。 – 2013-04-11 15:23:48

回答

0

你可以使用一個捕獲組趕上值:

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

這裏的值將包含在第1組中。

您還可以使用lookarounds

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

在這裏,您將只匹配值。

0

使用lookahead assertions

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

此外,還要強制數字的至少一個。