我必须使用regex从文本中收集两个信息。名称和数据库,然后在一个表中关联。但一个人只能单独收集。
这是一个示例,我有许多这样的块,其中两个没有数据库值,我需要输入这些数据块
[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查找该名称的正则表达式为:
(?<=\[)(.*)(?=\])(?<=Defaut|Database=)(.*)如何将两者合并为onde正则表达式?
发布于 2019-07-13 02:55:17
要匹配这两个值,您可以使用2个捕获组,并使用重复模式和负向先行检查一行是否未以默认Database开头,直到该行开始。
\[([^]]+)\](?:\r?\n(?!Default|Database).*)*\r?\n(?:Default|Database)=(\S+)关于模式
\[ Match [( Capture Group1 [^]]+ match 1+ times not ]
)关闭组1\]匹配](?:非捕获组\r?\n匹配换行符,(?!否定先行,断言右侧的内容不是Default|Database匹配的options之一
- `).*` Close negative lookahead and match any char except a newline 0+ times
)*关闭非捕获组,然后重复匹配换行符、任意选项和=(\S+)捕获组2,将1+匹配非空格字符(或使用(.+)匹配任意字符1+次数)regexstorm demo

https://stackoverflow.com/questions/57011323
复制相似问题