我有一個有趣的小任務。我需要設置一個變量爲true,如果:正則表達式檢查字符串的第二個字母
字符串以字母結尾或字符串中的第二個數字是「p」或「r」。
到目前爲止,我有
var endingIsLetter = Regex.(myString.length - 1) ??? magic here.
任何幫助嗎?我的正則表達式好友在一臺死的筆記本電腦上。
編輯 - REGEX不是必需的。我只是認爲這將是完成這件事的最簡單的方法。任何例子都歡迎。
我有一個有趣的小任務。我需要設置一個變量爲true,如果:正則表達式檢查字符串的第二個字母
字符串以字母結尾或字符串中的第二個數字是「p」或「r」。
到目前爲止,我有
var endingIsLetter = Regex.(myString.length - 1) ??? magic here.
任何幫助嗎?我的正則表達式好友在一臺死的筆記本電腦上。
編輯 - REGEX不是必需的。我只是認爲這將是完成這件事的最簡單的方法。任何例子都歡迎。
爲什麼使用正則表達式呢?
var flag = char.IsLetter(s[s.Length - 1]) ||
s[1] == 'p' ||
s[1] == 'r';
回想.
代表單個字符,^
爲字符串的開頭的錨定,$
爲字符串的末尾的錨,並且[pr]
是在方括號之間的列表中的任何單個字符。
^.[pr]
意味着「第二個字母是p
或r
。
[A-Za-z]$
的意思是 「最後一個字符是字母」。
Console.WriteLine(Regex.IsMatch("abc123", "^.[pr]|[A-Za-z]$")); // False
Console.WriteLine(Regex.IsMatch("abc12x", "^.[pr]|[A-Za-z]$")); // True
Console.WriteLine(Regex.IsMatch("apc123", "^.[pr]|[A-Za-z]$")); // True
Console.WriteLine(Regex.IsMatch("arc123", "^.[pr]|[A-Za-z]$")); // True
Console.WriteLine(Regex.IsMatch("", "^.[pr]|[A-Za-z]$")); // False
你應該使用'|' –
'^ [[pr] | [a-zA-Z] $'我猜)把它放在一個正則表達式中。 – horgh
你必須使用正則表達式?或者這是可選的?因爲代碼與正則表達式實際上可能會更快。 :)
要在字符串匹配第二個字符:^.[pr]
以匹配字符串中的最後一個字符:[a-z]$
組合:^.[pr]|[a-z]$
^
的字符串開始處匹配$
匹配字符串的末尾.
匹配任何字符(除了根據您的設置換行符)[...]
提供了一個選擇「任何一個」,在這裏你可以定義範圍,以及[a-z]
表示從範圍a
通過z
任何字符。請注意,這不包括而不是包括諸如元音變音等。注意的是,上述正則表達式預計區分大小寫的匹配才能正常工作(否則你就必須添加大寫字符爲好):^.[PRpr]|[A-Za-z]$
要獲得正則表達式的快速預覽(以如果我不確定)我更喜歡Regex Hero Tester。
var match = Regex.Matches(@"\w(p|r)+*\w", "Eppressio9n")
啊,我只是有點這樣做,因爲我現在必須離開工作。
我忘記了Regex.Matches返回的結果,你所要做的就是檢查是否有任何從Regex.Matches返回的東西。
希望這會有所幫助
爲什麼要使用正則表達式來實現像這樣簡單的事情? –