[英]Using regular expression in Java to extract date from string in the format 01OCT12 14:26
[英]%etd(msg01) regular expression?
我正在嘗試為String寫一個正則表達式,如%etd(msg01)
。
String string = "My name is %etd(msg01) and %etd(msg02)";
Pattern pattern = Pattern.compile("%etd(.+)");
Matcher matcher = pattern.matcher(string);
while(matcher.find()) {
System.out.println(matcher.group());
}
它輸出%etd(msg01) and %etd(msg02)
。 但是,我希望它分別打印%etd(msg01)
%etd(msg02)
。 我的意思是我正在尋找非貪婪的比賽。
在這種情況下,應如何更改正則表達式以使其不貪婪?
您應該使用此正則表達式:
Pattern pattern = Pattern.compile("%etd\\([^)]+\\)");
請在。*或。+后面打一個問號,以使其不貪心。 這應該為您工作...
Pattern pattern = Pattern.compile("%etd\\\\(.+?\\\\)");
在左括號和右括號之前也需要雙斜杠,因為它們在正則表達式中具有特殊含義。
如果您確定自己的名字在第一個名字之后不包含開放的括號,則另一種使用方法如下。
Pattern pattern = Pattern.compile("%etd\\\\([^(]+\\\\)");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.