首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >你对这个RegEx有什么理解?

你对这个RegEx有什么理解?
EN

Stack Overflow用户
提问于 2021-03-04 19:42:52
回答 2查看 62关注 0票数 1

我正在使用VBA并尝试将字符串拆分为三列,几乎所有的字符串都类似于Company Name 3567782 Agent Name.pdf

使用此模式,我希望匹配空格和数字(第一组)、数字(第二组)和空格之后的所有文本以及.pdf (第三组)之前的所有文本。

代码语言:javascript
代码运行次数:0
运行
复制
strPattern = "^(.+)\n(\d{4,10})\n(.+).pdf"

我记得python中的空格是\s,但是在VBA中看到的是\n

你能帮我找到我想要的东西的正确图案吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-03-04 19:54:56

在我的评论中,我使用了https://regex101.com站点。还有其他的,但我觉得这个对我最有帮助。

当我把你的行刑

代码语言:javascript
代码运行次数:0
运行
复制
^(.+)\n(\d{4,10})\n(.+).pdf

和测试字符串

代码语言:javascript
代码运行次数:0
运行
复制
Company Name 3567782 Agent Name.pdf

我注意到的第一件事是regex与测试字符串不匹配(请参见匹配信息下面的右侧)。

下面是我看到的几件事:

  1. \n是换行符,而不是空格。在regex中,空格是".
  2. Your last“。”在".pdf“中,它不是作为文字句点注册的,而是匹配任何字符的标记。要匹配文本句点,需要\.

如果我们改变这两种情况,它会返回三个组,它们似乎与您要寻找的内容相匹配。

代码语言:javascript
代码运行次数:0
运行
复制
^(.+) (\d{4,10}) (.+)\.pdf

它看起来像是数字,你在寻找4到10位数字。如果这是正确的,看起来你的正则表达式是好的。您可以将少量示例字符串放入测试字符串区域,并确保它在所有情况下都能工作。

票数 0
EN

Stack Overflow用户

发布于 2021-03-05 00: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或$)。您可以选择构建“.”进入第一组喜欢我的最高答案,但为了整洁和更好的控制,我更喜欢第二。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66481949

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档