首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将第二行文本中的某个字符串与正则表达式匹配

将第二行文本中的某个字符串与正则表达式匹配
EN

Stack Overflow用户
提问于 2020-04-28 01:29:37
回答 1查看 52关注 0票数 0

我是regex的新手,希望能得到一些指导/帮助。

目前,我正在编写一个表达式,它从提供的文本的第二行中派生出文本的某一部分。

以下是文本:

加拿大药房经理:个人药房许可证持有者/所有者: 123456 Manitoba R3E .

请参阅使用代码here正确设置格式

我的目标是从第二行派生' Manitoba‘字符串,但是我想让它成为动态的,而不是编写一个表达式来总是将Manitoba作为静态获取。我使用了下面的代码来定位第二行:

(.*)(?=(\n.*){3}$)

(它从最后一行开始匹配3行,从而定位到所需的行)

我注意到,在数据集中,省(马尼托巴省)总是在两个空格之间。

是否可以对代码做任何补充,使表达式只针对第二行,然后匹配空格之间的第一个字符串?

也许使用一个懒惰的表达式和一个积极的环视?

如果我以空格之间的所有匹配为目标,它将同时使用'Manitoba‘和'R3E 0L7’,这是我不想要的。

我希望它只匹配第二行空格之间的第一段文本。

非常感谢您的帮助:-)

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2020-04-28 02:20:11

一种选择是匹配第一行,然后在捕获组1时捕获第二行中的第二个单词。

然后匹配第二行的其余部分,并断言后面的内容是一行的3倍。

代码语言:javascript
运行
复制
^.*\r?\n\S+[^\S\r\n]+(\S+).*(?=(?:\r?\n.*){3}$)

在部件中:

  • ^ string
  • .*\r?\n的开始匹配整个行和newline
  • \S+匹配非空白字符(第一个"word")
  • [^\S\r\n]+匹配1+非空格字符,除了newlines
  • (\S+) "word')
  • .* line
  • (?= 1+ 1 1+ 匹配1+乘以非空格字符(第二个“word‘)
  • .*匹配line
  • (?=1+1+的其余部分,断言右边接下来的内容是
    • (?:\r?\n.*){3}$匹配3次换行符,然后是0+匹配除换行符以外的任何内容,并断言string

的结尾

  • ) Close lookahead

Regex demo

您也可以将先行查找转换为匹配

代码语言:javascript
运行
复制
^.*\r?\n\S+[^\S\r\n]+(\S+).*(?:\r?\n.*){3}$

Regex demo

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

https://stackoverflow.com/questions/61464762

复制
相关文章

相似问题

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