[英]extract a double or integer from a string using regular expression in java?
[英]Using Regular Expression in Java to extract information from a String
我有一個這樣的輸入String
:
"I am Duc/N Ta/N Van/N"
字符串"/N"
表示它是一個人的名字。
預期的輸出是:
名稱:德塔范
我該如何使用正則表達式呢?
這是用於捕獲每個以“ /N
”開頭的“名稱”的正則表達式
(\w+)\/N
使用Regex101驗證
現在,您只需要在該String
每個匹配項上循環並連接即可獲得結果:
String pattern = "(\\w+)\\/N";
String test = "I am Duc/N Ta/N Van/N";
Matcher m = Pattern.compile(pattern).matcher(test);
StringBuilder sbNames = new StringBuilder();
while(m.find()){
sbNames.append(m.group(1)).append(" ");
}
System.out.println(sbNames.toString());
德塔范
它給了您最難的部分。 我讓您根據自己的需要進行調整。
注意 :
在Java中,不需要轉義正斜杠,但是要在整個答案中使用相同的正則表達式,我將保留"(\\\\w+)\\\\/N"
,但是"(\\\\w+)/N"
將也可以
您可以像這樣使用Pattern和Matcher:
String input = "I am Duc/N Ta/N Van/N";
Pattern pattern = Pattern.compile("([^\\s]+)/N");
Matcher matcher = pattern.matcher(input);
String result = "";
while (matcher.find()) {
result+= matcher.group(1) + " ";
}
System.out.println("Name: " + result.trim());
輸出量
Name: Duc Ta Van
在Java9 +中,您可以使用Matcher::results
這樣的Matcher::results
:
String input = "I am Duc/N Ta/N Van/N";
String regex = "([^\\s]+)/N";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(input);
String result = matcher.results().map(s -> s.group(1)).collect(Collectors.joining(" "));
System.out.println("Name: " + result); // Name: Duc Ta Van
我已經使用“ [/ N] +”作為正則表達式。
[]
=匹配集合中的字符
\\/
=匹配字符/
按字面值(區分大小寫)
+
=匹配一次到無限次,並盡可能多地匹配,並根據需要返回(貪婪)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.