正则多个或条件
假设我有杂乱的数据模式:
- trnd-0ll2134.sv
- trn_rtxdft.sv
- trnd_zrsftff.sv
- dr3345.sv
我试图使用REGEX在“ - ”或“ _”的前缀上过滤前缀,并且没有。
所需的输出
column1 column2 column3
=========== =========== ===========
TRND - 0LL2134.SV
TRN _ RTXDFT.SV
TRND _ ZRSFTFF.SV
<blank> <blank> DR3345.SV
到目前为止,我
\-|\_
用“ - ”或“ ”的前缀过滤,但在没有“ - ”或“ ”的字符串上有挑战过滤的挑战过滤。
Lets say I have messy data pattern:
- TRND-0LL2134.SV
- TRN_RTXDFT.SV
- TRND_ZRSFTFF.SV
- DR3345.SV
I am trying to use regex to filter on prefixes with "-" or "_", and those without.
Desired output
column1 column2 column3
=========== =========== ===========
TRND - 0LL2134.SV
TRN _ RTXDFT.SV
TRND _ ZRSFTFF.SV
<blank> <blank> DR3345.SV
So far I used
\-|\_
to filter on prefixes with "-" or "" but have a challenge filtering on strings that do not have a prefix with either "-" or ""
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
使用
[-_]?
与可选的分隔符匹配。对于第一个单词,请使用非蛋白质量化器,以便如果没有分离器,它将是空白的,并且该单词将与第3列关联。
demo
Use
[-_]?
to match the optional separator.Use a non-greedy quantifier for the first word so that if there's no separator, it will be blank and the word will be associated with column 3.
DEMO
使用
?
使组可选demo
如果您想完全匹配字符序列
trn(d)
,而不是:Use a
?
to make a group optionalDemo
If you want to match exactly the characters sequence
TRN(D)
than:您的匹配表达式应包含3组,以便将数据馈入输出的每一列,并固定在测试字符串的开头。
具体来说,尝试...
捕获组#2,3,4将包含数据以进入您的列1,2,3,resp。;如果测试字符串中没有一个分离字符,则第3列的内容将在
您描述问题的方式中捕获组5中,此模式将始终匹配 - 唯一区别在于如何将测试字符串分布到列插槽中。如果有效的测试字符串需要在
.sv
上结束,则使用您在哪个编程环境中使用该答案,因此无法指定如何使用正则拨号。
在线示例可在Regex101.com上获得 variant 1 和变体2
Your matching expression should contain 3 groups for data to be fed into each of the columns of your output and be anchored at the beginning of your test strings.
Specifically, try ...
Capture groups #2,3,4 will contain the data to go into your columns 1,2,3, resp.; in case there is none of the separating characters in the test string, the content of column 3 will be in capture group #5
The way you've described your problem, this pattern will always match - the only difference is in how the test string is distributed into the column slots. If valid test strings need to end on
.SV
, useAs you haven't indicated in which programming environment you are operating this answer can not specifiy how to employ the regex.
Online examples are available on Regex101.com for Variant 1 and Variant 2