【发布时间】:2016-01-06 07:43:55
【问题描述】:
我有file.txt格式的数据
afsdfds/sfsd/sfdsf/VISA_CTS_ec0cbf000an2n06x5_G3B7I1/sfdfdvged/sdvdsfgv ec0cbf000an2n06x5
afsggggdfds/sfsd/sfdsf/VISA_CTS_ec0clb000an2n10x5_G3B7I1/sfdggggfdvged/sdvdsfgv ec0clb000an2n10x5
afsdfds/fdddo9045374857_234242/sfsd/sfdsf/VISA_CTS_ec0cilb000an2n16x5_G3B7I1/sfdfdvged/sdvdsfgv ec0cilb000an2n16x5
qweryt/visa_ec0ceb000an2n20x5_tyiuop/gfds_sfgds_/clock_VISA_CTS_ec0ceb000an2n20x5_G3B7I1/hjkhfjhfd/asdfasdf ec0ceb000an2n20x5
我在 Tcl 中使用
package require fileutil
set filename file.txt
set pattern {ec0cbf|ec0clb|cb|ceb}
puts "[llength [fileutil::grep $pattern $filename]] occurances"
$tcl> 7 occurances
我只希望我的正则表达式返回 file.txt 中最正确的值,我的最终答案是 3 次出现 (ec0cbf000an2n06x5 ec0ceb000an2n20x5 ec0ceb000an2n20x5) )而不是 7 次,因为我没有检测到“cilb”
这个file.txt是动态数据`
【问题讨论】:
-
我认为这两者都符合您的要求,但我并不肯定:` (.*(?:ec0cbf|ec0clb|cb|ceb).*$)` ([演示](regex101.com/r/sW7bY5/2)) 或` (\S*(?:ec0cbf|ec0clb|cb|ceb).*$)` (demo)
-
我显示的答案给出了 3 个匹配项,这就是您的问题所说的。在我链接的演示中,“cilb”不匹配。演示没有向您展示吗?
-
@Jota 是的,这正是我正在寻找的正则表达式。谢谢 !它正在工作。
-
" (\S*(?:ec0cbf|ec0clb|ec0ceb).*?$)"