【问题标题】:How to capture company name by regex statement in LibreOffice's Calc如何通过 LibreOffice 的 Calc 中的正则表达式语句捕获公司名称
【发布时间】:2021-09-09 19:22:57
【问题描述】:

我正在使用 LibreOffice 的 Calc 正则表达式函数从不同的字符串中仅捕获公司名称。一个 Calc 的单元格仅包含一个字符串。这些字符串的结构如下:

C.H. Robinson o/Vienna SZO13G9、SZO6P34、Roger Moor
Bus Trans Mouse PT513AA、Anthony Hopkins
P.H.U TRI-POL ZMI14A8
Mank WXL89040,杰瑞德·莱托

每个字符串总是以公司名称开头,除字母外还可以包括点、空格数(但不总是)、斜线符号。
名称后跟车牌号 - 以大写字母 (2+) 开头,然后是数字 (1+),然后是(但不总是)大写字母(0+),然后是(但不总是)数字(0 +)

有时在逗号之后是第二个车牌,然后是(但不总是)有姓名和姓氏。

很快-我想从字符串的开头到第一个车牌号捕获部分字符串,不包括前面的空格符号。我已经用粗体标记了我想要捕捉的部分。

我试过这个:
/(.+)\s[A-Z]+[0-9]+[[A-Z]+]?[[0-9]+]?/gm
但它不起作用。

在许多情况下它都可以工作,感谢@Hitesh,但仍然有一些情况不起作用:例如
ŁUKASZ MAZIAR RDE66658、RDE0542P、Taras Stolbowski
MULTIBLOB AR7238N, KR5P543, Jacek Stasiuk
Mir-Trans WSI66671, WSI1671M, Stanisław Szymański
MIFESTA SPÓŁKA AKCYJNA SJ1083T, WSI71321, STANISŁAW BOBROWSKI 有时公司名称包括波兰字母。到目前为止,我使用[\s\p{L}]+ 与他们打交道,但不知道在这种情况下如何使用它。

【问题讨论】:

    标签: regex libreoffice libreoffice-calc


    【解决方案1】:

    以下模式以及替换将为您提供确切的结果:

    Pattern: (.*)\s[A-Z]{2,}[0-9]{2}.*
    Substitution Group: $1
    

    演示:https://regex101.com/r/ESss6i/4

    在哪里,

    。句点 -> 匹配任何单个字符的单个字符,行尾除外。

    [ ] 方括号 -> 匹配括号列表中的任何单个字符

    {n,} -> 带数字和逗号的大括号,匹配前一个字符的最小次数

    【讨论】:

    • @Bartek:这个尝试对你有帮助吗?
    • 只需将这些字符放在带有 OR 条件的第一个括号下
    【解决方案2】:

    解决了。
    Calc 的第三个参数为空的正则表达式函数返回不匹配的部分,所以我使用\s[A-Z]+[0-9]+.* 选择从汽车车牌号开始的部分字符串,正则表达式函数返回其余部分。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-26
      • 1970-01-01
      • 2013-10-06
      相关资源
      最近更新 更多