首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >两个lookaround regexstorm.net的正则表达式组合

两个lookaround regexstorm.net的正则表达式组合
EN

Stack Overflow用户
提问于 2019-07-13 01:08:12
回答 1查看 36关注 0票数 1

我必须使用regex从文本中收集两个信息。名称和数据库,然后在一个表中关联。但一个人只能单独收集。

这是一个示例,我有许多这样的块,其中两个没有数据库值,我需要输入这些数据块

代码语言:javascript
复制
[SCD] {I need the name between []}
Driver=/opt/pcenter/pc961/ODBC7.1/lib/DWmsss27.so
Description=
Database=scd {I need the value after Defaut|Database}
Address=#######
LogonID=######
Password=######
QuoteId=No
AnsiNPW=No
ApplicationsUsingThreads=1

查找该名称的正则表达式为:

代码语言:javascript
复制
(?<=\[)(.*)(?=\])

代码语言:javascript
复制
(?<=Defaut|Database=)(.*)

如何将两者合并为onde正则表达式?

EN

回答 1

Stack Overflow用户

发布于 2019-07-13 02:55:17

要匹配这两个值,您可以使用2个捕获组,并使用重复模式和负向先行检查一行是否未以默认Database开头,直到该行开始。

代码语言:javascript
复制
\[([^]]+)\](?:\r?\n(?!Default|Database).*)*\r?\n(?:Default|Database)=(\S+)

关于模式

  • \[ Match [
  • ( Capture Group1
    • [^]]+ match 1+ times not ]

  • )关闭组1
  • \]匹配]
  • (?:非捕获组
    • \r?\n匹配换行符,
    • (?!否定先行,断言右侧的内容不是
      • Default|Database匹配的options

之一

代码语言:javascript
复制
- `).*` Close negative lookahead and match any char except a newline 0+ times

  • )*关闭非捕获组,然后重复匹配换行符、任意选项和=
  • (\S+)捕获组2,将1+匹配非空格字符(或使用(.+)匹配任意字符1+次数)

regexstorm demo

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

https://stackoverflow.com/questions/57011323

复制
相关文章

相似问题

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