基本的正则表达式帮助

时间:2011-02-28 11:17:19

标签: c# regex

我正在尝试匹配名称模式。名称可以是

  

lastname,firstname middleinitial

  

姓氏,名字

我正在尝试创建一个正则表达式来检查字符串的最后2个字符是[space] [anychar]

我在网上发现了一个教程,说要将A匹配到你所做的字符串的末尾

 A$

"A" at the end of a line

在将此应用于我的时候,我试图做这样的事情,以及其中的一些形式。我完全不知道:/

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

5 个答案:

答案 0 :(得分:4)

您可以在没有正则表达式的情况下轻松查看最后两个字符。

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

这更清晰(更易读),并且比正则表达式执行得更快。它让你不必担心非英文字母(A-Z是一个非常有限的集合!)。

(PS您也可以使用char.IsWhiteSpace而不是直接与' '进行比较;然后它也适用于其他空格字符。例如,亚洲用户可能会进入U + 3000表意空间而不是标准的U + 0020空间。)

答案 1 :(得分:1)

抛弃括号并按照这样做:\s[A-Za-z]$

\s代表“任何空格字符”,[A-Za-z]代表“此子集中的任何字符:A-Za-z。”AZ“类似于”A到Z diapason的关键字“,但通常使用括号来表示”任何这些符号“。例如,模式[so]将匹配任何字母 s o

您也可以通过在左括号后添加^符号来反向执行此操作,以便模式匹配括号中出现的任何字符。因此[^so]将匹配 a b 和所有其他符号,但不匹配 s o

编辑:如果你想要匹配一个初始,“A-Z”可能不是最好的主意。使用unicode \p{L}属性。

答案 2 :(得分:0)

您发布的正则表达式将匹配任何两个有空格和字母的字符串。

含义:

  

A

我不确定你到底想要匹配什么,所以很难评论它应该是什么,我建议你尝试使用正则表达式开发工具来让你的生活更轻松。

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

是我使用的(因为它是免费的),但那里有很多。

答案 3 :(得分:0)

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

等于'恰好匹配一个破碎空间和字符串末尾的集合A-Z或a-z中的一个字符($)'。

要测试lastname,firstname middlenamelastname,firstname,您可以使用量词来说出“应该匹配多少内容”:

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

等于'从字符串开始(^),匹配任何字符(。),1次或多次(+)后跟一个逗号,后跟任何字符一次或多次,后跟零或一(?) )空格后跟任何字符零次或多次(*)到字符串结尾($)'。

以此为出发点,构建任何所需的复杂性。

答案 4 :(得分:0)

这些正则表达式应该可以解决问题。 \w+,\w+(?:\s\w+)?