我正在尝试创建一个正则表达式,它有多个由|
(或)分隔的条件。我想使用捕获组,但我还没有完全搞清楚它怎么工作。
3个样本字符串:
--- {source-charset: '', encoding-error-limit: '', class: stat-direct, directory: \\\myserver\C\FOLDER\SUB_FOLDER}
--- {odbc-connect-string-extras: '', server: hello.sample.com, dbname: X_DB, port: '80', class: hello, username: USERX}
--- {cleaning: 'no', filename: //myserver/D/FOLDER/SUB_FOLDER/File name.xlsx, dataRefreshTime: '', interpretationMode: '0'}
我希望每个样本字符串都能够返回正则表达式:
\\\myserver\C\FOLDER\SUB_FOLDER
X_DB
//myserver/D/FOLDER/SUB_FOLDER/File name.xlsx
基本上,在directory:
、dbname:
或filename:
后面的值,并以}
(其中一个)或,
(两个)结束。
我成功地使用了OR语句来满足这三个条件。正则表达式提取。
'directory: [^}]+|dbname: [^,]+|filename: [^,]+'
这将返回:
directory: \\\myserver\C\FOLDER\SUB_FOLDER}
dbname: X__DB,
filename: //myserver/D/FOLDER/SUB_FOLDER/File name.xlsx,
如果我引入捕获组,我只能得到一个部分的正确返回: 'directory: ([^}]+)|dbname: ([^,]+)|filename: ([^,]+)' 这将返回:
\\\myserver\C\FOLDER\SUB_FOLDER
null
null
我已经成功使用嵌套正则表达式使其工作,该正则表达式获取了
的结果。'directory: [^}]+|dbname: [^,]+|filename: [^,]+'
并使用:
': ([^,}]+)'
这个方法可以得到我想要的结果,但我希望用一个正则表达式完成。 非常感谢您的帮助。
/Aron