簡體   English   中英

什么是正確的正則表達式以匹配大寫字母僅單詞中的第一個字母

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM