-1

我有以下数据:

abc 定义;吉。

此正则表达式将匹配:

([a-z0-9A-ZÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ ]*)\W (.*)( (\w\.))?

这个正则表达式也将匹配

([a-z0-9A-ZÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ ]*)\W (.*)$

我对正则表达式还是很陌生,但我想 | 代表 OR, () 分组和 ? 代表 0 次或 1 次出现。所以我认为在组合上述查询时它仍然会匹配。但是,以下内容将不匹配:

([a-z0-9A-ZÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ ]*)\W (.*)( (\w\.))|$

我究竟做错了什么?

附言。我正在使用以下内容来测试我的正则表达式。 http://regexpal.com/

编辑:我没有使用代码标签,所以一个字符消失了

EDIT2:我要匹配的是以下内容,数据将是一个名称。所以“abc def”是姓氏。ghi 称呼(英语不是我的母语,这是像先生这样的词的正确术语吗?)。然而,名字的第一个字母是可能的。这就是为什么它应该是行尾,或者那个字母。

涉及名字时的数据将是:

美国广播公司;定义。G。

4

1 回答 1

1

| 的运算符优先级 操作员有点棘手。将其两个操作数显式括在括号中通常是个好主意。此外,请注意在您的正则表达式中插入空格。看起来您想匹配 \w 中的文字句点。片段,以匹配“G”。

所以我认为你想要的组合表达式是这样的

((.*)( (\w\.))?)|(.*)$

但由于 ?表示 0 或更多,正如您所了解的,这可以重写为

(.*)( (\w\.))?)$

而且,要重新添加表达式的其余部分,我们有

^[a-z0-9A-ZÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ ]*)\W (.*)( (\w\.))?)$

而且,是的,“salutation”或“greeting”是“Mr.”、“Ms.”、“Dr.”等的好词。

于 2012-04-05T17:30:59.453 回答