2012-04-05 199 views
-1

我有以下数据:

ABC DEF; GHI。

此正则表达式匹配:

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

此正则表达式也将匹配

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

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

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

我在做什么错了?

ps。 我正在使用以下测试我的正则表达式。 http://regexpal.com/

编辑: 我没有使用的代码标签,这样一个角色消失

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

当存在涉及将第一名称的数据:

ABC; DEF。 G.

+0

我在第二个正则表达式中找不到匹配 - 你能检查吗? – PinnyM 2012-04-05 16:47:12

+0

同样在这里。你想匹配什么部分的字符串?那部分不清楚。 – Squazic 2012-04-05 16:49:17

+2

$表示“字符串的结尾”。所以你最后的正则表达式不太合理。你已经编码了“(long-pattern)”或“字符串的末尾”。 – 2012-04-05 16:50:24

回答

1

运算符优先级为|操作员有点棘手。将其两个操作数明确地包装在圆括号中通常是个好主意。 另外,注意将空格插入到正则表达式中。看起来你想在\ w中匹配一个文字周期。片段,以匹配“G”。

所以我想你想的组合表达什么是一样的东西

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

但自从?是指0或更多,因为你已经学会了,这可以被改写为

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

而且,为了增加表达式的休息回来,我们有

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

而且,是的,“敬礼”或“问候”对于“先生”,“女士”,“博士”等来说是个好词。

+0

在我做出正确的表达之后: ([a-z0-9A-ZAÁ'AÇÈÉÊËÌÍÏÒÓÔÕÖÙÚÛâÝàāçãéêëìíîïðòóôõöùúûüýÿ*] \ W(。*)((\ w \ ))?$ 它似乎在工作。 – Boelensman1 2012-04-05 17:40:27