我試圖匹配以下字符串中的「我的體重」。我使用Java的String類來進行正則表達式匹配:如何獲得此正則表達式以匹配我所需的輸入
String line = "MY WEIGHT:200";
String s = "^(MY WEIGHT).";
line.matches(s);
但它總是返回false。然後我嘗試s="MY WEIGHT"
,但它也不起作用。這裏有什麼問題?
我試圖匹配以下字符串中的「我的體重」。我使用Java的String類來進行正則表達式匹配:如何獲得此正則表達式以匹配我所需的輸入
String line = "MY WEIGHT:200";
String s = "^(MY WEIGHT).";
line.matches(s);
但它總是返回false。然後我嘗試s="MY WEIGHT"
,但它也不起作用。這裏有什麼問題?
兩個不匹配:.
匹配單字符,但line
有"MY WEIGHT"
後4個字 - 你的意思是.*
(至少爲0個字符)或.+
(至少1個字符)?
字符串的.match
必須匹配整個字符串與正則表達式,而不是一個子字符串。這就是爲什麼s="MY WEIGHT"
也不起作用。
String s =「^(MY WEIGHT)。*」;
將匹配。如果您對自己的需求更具體,則構建更具體的正則表達式會更容易。
這是正確的。應該有'。*'。點「。」後面的星號*是否意味着匹配前一個元素零次或多次? – tonga
@tonga不,它只是表示0個或更多的任意字符('。*'基本上匹配任何東西)。 – arshajii
這就是爲什麼它讓我困惑。從正則表達式維基,它說明星'*'匹配前面的元素零次或多次。但是,當星號與點「。」一起使用時,它會改變其含義。 – tonga