[英]What is the correct regex to match uppercase letter for only first letter in words
現在,我的程序使用此模式.*[AZ].*
來匹配每個具有大寫字母的單詞。 但是我的問題是,我需要一種模式,該模式只能在單詞的開頭識別大寫單詞。
現在為我的程序輸入示例:
我叫Johan,來自蘭卡威。
匹配的輸出:我的約翰·蘭卡威。
但是使用我的模式,像langKawi這樣的單詞,其中大寫字母不在單詞的開頭,它仍然匹配。
任何人都可以通過以下模式來幫助我:該模式與僅首字母大寫的單詞匹配,並且我的文本/輸入僅包含字母字符,而沒有數字和符號。 謝謝。
在單詞開始之前使用單詞邊界進行匹配,然后是單詞,然后是另一個單詞邊界:
\b[A-Z]\w*\b
在Java中,看起來像這樣:
Pattern p = Pattern.compile("\\b([A-Z]\\w*)\\b");
String s = "My name is Johan and I am from langKawi.";
Matcher matcher = p.matcher(s);
while(matcher.find()){
System.out.println(matcher.group(1));
}
輸出:
My
Johan
I
這就是為什么他們發明\\b
的原因:
\b[A-Z][A-Za-z]*\b
\\b
充當單詞邊界:它匹配空格(和其他定界符)或字符串的開頭和結尾。
捕獲所有部分的示例:
import java.util.regex.*;
public class HelloWorld{
public static void main(String []args){
Pattern p = Pattern.compile("\\b([A-Z][a-z]*)\\b");
Matcher m = p.matcher("My name is Johan and I am from langKawi.");
while(m.find()) {
System.out.println(m.group(1));
}
}
}
您可以在此處測試代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.