正则表达式中的多个 Or 条件
Multiple Or Conditions in Regex
假设我有混乱的数据模式:
- TRND-0LL2134.SV
- TRN_RTXDFT.SV
- TRND_ZRSFTFF.SV
- DR3345.SV
我正在尝试使用正则表达式过滤前缀为“-”或“_”的前缀,以及不带前缀的前缀。
期望的输出
column1 column2 column3
=========== =========== ===========
TRND - 0LL2134.SV
TRN _ RTXDFT.SV
TRND _ ZRSFTFF.SV
<blank> <blank> DR3345.SV
到目前为止我用过[=12=]
\-|\_
过滤带有“-”或“”的前缀,但很难过滤不带有“-”或“”前缀的字符串
使用[-_]?
匹配可选分隔符。
对第一个词使用 non-greedy 量词,这样如果没有分隔符,它将为空白,并且该词将与第 3 列相关联。
^([A-Z0-9]*?)([-_]?)([A-Z0-9]+\.SV)$
使用 ?
使组可选
^(([A-Z]+)[-_])?(\w+.SV)$
如果你想精确匹配字符序列 TRN(D)
比:
^((TRND?)[-_])?(\w+.SV)$
您的匹配表达式应包含 3 组数据,以便将数据输入输出的每一列并固定在测试字符串的开头。
具体来说,试试...
/^((.*)([_-])(.*))|^([^_-]+)$/
捕获组 #2、3、4 将包含分别进入第 1、2、3 列的数据;如果测试字符串中有 none 个分隔字符,则第 3 列的内容将在捕获组 #5
中
根据您描述问题的方式,此模式将始终 匹配 - 唯一的区别在于测试字符串如何分配到列槽中。如果有效的测试字符串需要以 .SV
结尾,请使用
/^((.*)([_-])(.*[.]SV))$|^([^_-]+[.]SV)$/
由于您没有说明您在哪个编程环境中操作,此答案无法指定如何使用正则表达式。
的在线示例
假设我有混乱的数据模式:
- TRND-0LL2134.SV
- TRN_RTXDFT.SV
- TRND_ZRSFTFF.SV
- DR3345.SV
我正在尝试使用正则表达式过滤前缀为“-”或“_”的前缀,以及不带前缀的前缀。
期望的输出
column1 column2 column3
=========== =========== ===========
TRND - 0LL2134.SV
TRN _ RTXDFT.SV
TRND _ ZRSFTFF.SV
<blank> <blank> DR3345.SV
到目前为止我用过[=12=]
\-|\_
过滤带有“-”或“”的前缀,但很难过滤不带有“-”或“”前缀的字符串
使用[-_]?
匹配可选分隔符。
对第一个词使用 non-greedy 量词,这样如果没有分隔符,它将为空白,并且该词将与第 3 列相关联。
^([A-Z0-9]*?)([-_]?)([A-Z0-9]+\.SV)$
使用 ?
使组可选
^(([A-Z]+)[-_])?(\w+.SV)$
如果你想精确匹配字符序列 TRN(D)
比:
^((TRND?)[-_])?(\w+.SV)$
您的匹配表达式应包含 3 组数据,以便将数据输入输出的每一列并固定在测试字符串的开头。
具体来说,试试...
/^((.*)([_-])(.*))|^([^_-]+)$/
捕获组 #2、3、4 将包含分别进入第 1、2、3 列的数据;如果测试字符串中有 none 个分隔字符,则第 3 列的内容将在捕获组 #5
中根据您描述问题的方式,此模式将始终 匹配 - 唯一的区别在于测试字符串如何分配到列槽中。如果有效的测试字符串需要以 .SV
结尾,请使用
/^((.*)([_-])(.*[.]SV))$|^([^_-]+[.]SV)$/
由于您没有说明您在哪个编程环境中操作,此答案无法指定如何使用正则表达式。
的在线示例