[英]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]
將匹配任何s或o的字母。
您也可以反向操作,方法是在左方括號后添加^
符號,以便該模式與方括號中未出現的任何字符匹配。 因此[^so]
將匹配a , b ,! 和所有其他符號,但不匹配s或o 。
編輯:如果您想匹配一個初始,“ AZ”可能不是最好的主意。 使用unicode \\p{L}
屬性。
您發布的正則表達式將匹配任何兩個帶有空格和字母的字符串。
含義:
一種
等等
我不確定您到底想匹配什么,所以很難評論它應該是什么,我可以建議您嘗試使用正則表達式開發工具來使您的生活更輕松。
http://www.ultrapico.com/Expresso.htm
是我使用的(因為它是免費的),但是那里有一噸。
這個
/\s[A-Za-z]$/
等於“在字符串($)的末尾完全匹配一個破折號空格和集合AZ或az中的一個字符”。
要測試lastname,firstname middlename
或lastname,firstname
您可以使用量詞來說明“應匹配多少個”:
/^.+,.+\s?.*$/
等於'從字符串(^)的開頭,匹配任意字符(。),1次或多次(+),后跟一個逗號,再跟任意字符一次或多次,后跟零或一個(?)空格距離字符串($)末尾零或多次(*)的任何字符”。
以此為起點,構建任何所需的復雜性。
這些正則表達式可以解決問題。 \\w+,\\w+(?:\\s\\w+)?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.