我正在使用VBA并尝试将字符串拆分为三列,几乎所有的字符串都类似于Company Name 3567782 Agent Name.pdf
。
使用此模式,我希望匹配空格和数字(第一组)、数字(第二组)和空格之后的所有文本以及.pdf (第三组)之前的所有文本。
strPattern = "^(.+)\n(\d{4,10})\n(.+).pdf"
我记得python中的空格是\s
,但是在VBA中看到的是\n
。
你能帮我找到我想要的东西的正确图案吗?
发布于 2021-03-04 11:54:56
在我的评论中,我使用了https://regex101.com站点。还有其他的,但我觉得这个对我最有帮助。
当我把你的行刑
^(.+)\n(\d{4,10})\n(.+).pdf
和测试字符串
Company Name 3567782 Agent Name.pdf
我注意到的第一件事是regex与测试字符串不匹配(请参见匹配信息下面的右侧)。
下面是我看到的几件事:
\.
如果我们改变这两种情况,它会返回三个组,它们似乎与您要寻找的内容相匹配。
^(.+) (\d{4,10}) (.+)\.pdf
它看起来像是数字,你在寻找4到10位数字。如果这是正确的,看起来你的正则表达式是好的。您可以将少量示例字符串放入测试字符串区域,并确保它在所有情况下都能工作。
发布于 2021-03-04 16:00:30
我会使用这两种方法中的一种:(?:(?:([a-zA-Z]+\.?)|(\d+)))
抓住一个贪心的可能。允许使用.pdf或捕获数字
此版本不包括空格或\s
或者保持搜索的结构化,这样您就可以控制每一列的输入和输出--单词边界或字符串的开始--第一次捕获( ^(\w+\s\w+)|(\d+)|(\w+\s\w+\.\w+$)
\b or ^
)--任何α数字字符--贪婪地使用任何α数字字符,然后是1 x空格(use \s*
或\s+ (更多信息),然后是α数字贪婪的|(\d+)
--更改-- \d+ --只捕获数字‘\(\w+\s\w+.\w+$)--类似于第一个组,但允许’。到字符串末尾的pdf和界(\G或$)。您可以选择构建“.”进入第一组喜欢我的最高答案,但为了整洁和更好的控制,我更喜欢第二。
https://stackoverflow.com/questions/66481949
复制