两个环视的regex组合-regexstorm.net
我必须用正则表达式从文本中收集两个信息。然后将名称和数据库关联到一个表中。但a只能单独收集 这是一个例子,我有很多这样的块,其中两个没有数据库值,我需要忽略它们两个环视的regex组合-regexstorm.net,regex,regex-lookarounds,Regex,Regex Lookarounds,我必须用正则表达式从文本中收集两个信息。然后将名称和数据库关联到一个表中。但a只能单独收集 这是一个例子,我有很多这样的块,其中两个没有数据库值,我需要忽略它们 [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=####### L
[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
要查找名称的正则表达式是:
(?<=\[)(.*)(?=\])
(?要匹配这两个值,您可以使用两个捕获组,并使用重复模式和负前瞻来检查一行是否以数据库的默认值开始,直到该行开始
\[([^]]+)\](?:\r?\n(?!Default|Database).*)*\r?\n(?:Default|Database)=(\S+)
关于图案
\[
匹配[
(
捕获组1
[^]]+
匹配1+次不]
)
关闭第1组
\]
匹配]
(?:
非捕获组
\r?\n
匹配换行符
(?!
负向前看,断言直接在右边的不是
Default |数据库
匹配其中一个选项
).*
关闭负前瞻并匹配除换行符外的任何字符0+次
)*
关闭非捕获组并重复0多次
\r?\n(?:默认|数据库)=
匹配换行符、任何选项和=
(\S+)
捕获组2,将非空白字符匹配1+次(或使用(.+)
将任何字符匹配1+次)
尝试Regex.Matches(s,@)(?单击可将答案标记为已接受✓ 上。
\[([^]]+)\](?:\r?\n(?!Default|Database).*)*\r?\n(?:Default|Database)=(\S+)