簡體   English   中英

正則表達式基本幫助

[英]Basic regex help

我正在嘗試匹配名字模式。 名稱可以是

姓氏,名字中間名縮寫

要么

姓,名

我正在嘗試創建一個正則表達式來檢查字符串的最后2個字符為[空格] [anychar]

我在網上找到了一個教程,說要將A匹配到您要完成的字符串的末尾

 A$

"A" at the end of a line

在將其應用到我的過程中,我試圖做類似這樣的事情,並且也嘗試了多種形式。 我真的不知道:/

([\\s][A-Za-z]$) 

您無需使用正則表達式即可輕松檢查最后兩個字符。

bool hasMiddleInitial = false;
if (name.Length > 1 &&
    name[name.Length-2] == ' ' &&
    char.IsLetter(name, name.Length-1))
{
    hasMiddleInitial = true;
}

與正則表達式相比,這不僅更清晰(更易於閱讀),而且執行速度更快。 它使您不必擔心非英語字母( AZ是非常有限的字母!)。

(PS您也可以使用char.IsWhiteSpace而不是直接與' '進行比較;然后它也可以與其他空格字符一起使用。例如,亞洲用戶可能會輸入U + 3000表意文字空間,而不是標准U + 0020空間)

拋開括號,像這樣: \\s[A-Za-z]$

\\s代表“任何空格字符”, [A-Za-z]代表“此子集中的任何字符:A-Za-z。“ AZ”類似於“ A to Z diapason”的關鍵字,但通常您可以使用方括號來表示類似“這些符號中的任何一個”之類的詞,例如,模式[so]將匹配任何so的字母。

您也可以反向操作,方法是在左方括號后添加^符號,以便該模式與方括號中出現的任何字符匹配。 因此[^so]將匹配ab ,! 和所有其他符號,但不匹配so

編輯:如果您想匹配一個初始,“ AZ”可能不是最好的主意。 使用unicode \\p{L}屬性。

您發布的正則表達式將匹配任何兩個帶有空格和字母的字符串。

含義:

一種

等等

我不確定您到底想匹配什么,所以很難評論它應該是什么,我可以建議您嘗試使用正則表達式開發工具來使您的生活更輕松。

http://www.ultrapico.com/Expresso.htm

是我使用的(因為它是免費的),但是那里有一噸。

這個

/\s[A-Za-z]$/

等於“在字符串($)的末尾完全匹配一個破折號空格和集合AZ或az中的一個字符”。

要測試lastname,firstname middlenamelastname,firstname您可以使用量詞來說明“應匹配多少個”:

/^.+,.+\s?.*$/

等於'從字符串(^)的開頭,匹配任意字符(。),1次或多次(+),后跟一個逗號,再跟任意字符一次或多次,后跟零或一個(?)空格距離字符串($)末尾零或多次(*)的任何字符”。

以此為起點,構建任何所需的復雜性。

這些正則表達式可以解決問題。 \\w+,\\w+(?:\\s\\w+)?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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