定义正则表达式以匹配多个名称变体

时间:2018-05-23 06:48:48

标签: regex

我有以下RegEx定义:

[\d+]{4}\.[\d+]{3}\.[\d+]{3}\s\s(([\w][.])+\s[\w]+).*

1111.111.111  A.A.A. GEK-HENK                    00    20     01     AFV    2018-06-30 22   TOETS ONDERPANDSWAARDE                                         

在上面的字符串中,正则表达式将捕获子组1,它将捕获整个字符串和子组2:A.A.A。 GEK。它不会捕获缩进和名称的其余部分。这个完全相同的正则表达式还需要捕获以下其他变体:

首字母一直很好,它只是姓氏。

  1. HENK(好的)
  2. HENK-GEK(仅限HENK)
  3. HENK GEK(仅发现HENK)
  4. HENK-GEK YES(仅查找HENK)
  5. HENK GEK-YES(仅发现HENK)
  6. HENK GEK YES(仅查找HENK)
  7. 如何编辑上面的正则表达式以匹配使用缩进或空格的姓氏。姓氏后面的下一个字符始终是空格。我尝试在最后.*\s之后[\w]+[w\]+.*\s进行分组。 Or 在我眼中,直到下一个空间才能捕捉到所有东西,但这不是真的。

    请帮助:)

1 个答案:

答案 0 :(得分:0)

我自己修好了。解决方案:

[\d+]{4}\.[\d+]{3}\.[\d+]{3}(\s+)(.*)([\d]{2}\s+[\d]{2}\s+[\d]{2}).*

在捕获子组$ 2后,我编辑了这样的输出,用trim($ 2)替换整个字符串。这将涵盖从1到6的所有情况。再见。