我在groovy这样做。
输入:
hip_abc_batch hip_ndnh_4_abc_copy_from_stgig abc_copy_from_stgig
hiv_daiv_batch hip_a_de_copy_from_staging abc_a_de_copy_from_staging
我想得到最后一栏。基本上任何以abc_
开头的东西。
我尝试了以下正则表达式(适用于第二行但不适用于第二行。
\abc_.*\
但是这给了我abc_batch
我正在寻找一个正则表达式,它会以abc_
开头的任何内容
但我不能使用\^abc_.*\
,因为整个字符串不是以abc _
答案 0 :(得分:5)
听起来你正在寻找以abc_
开头的“单词”(即不包含空格的序列)。你可以试试:
/\babc_.*\b/
\b
表示(在某些正则表达式中)“单词边界”。
答案 1 :(得分:3)
试试这个:
/\s(abc_.*)$/m
以下是评论版,因此您可以了解其工作原理:
\s # match one whitepace character
(abc_.*) # capture a string that starts with "abc_" and is followed
# by any character zero or more times
$ # match the end of the string
由于正则表达式具有“m
”开关,因此它将是一个多行表达式。这允许$
匹配每一行的结尾而不是整个字符串本身的结尾。
编辑:您无需修剪空白,因为第二个捕获组仅包含文本。粗略扫描this tutorial后,我相信这是使用Groovy获取捕获组值的方法:
matcher = (yourString =~ /\s(abc_.*)$/m)
// this is how you would extract the value from
// the matcher object
matcher[0][1]
答案 2 :(得分:0)
Regex buddy(付费)和RegExr(免费)可以帮助您学习RegEx。
答案 3 :(得分:0)
我认为你正在寻找这个:\ s(abc_ [a-zA-Z _] *)$
如果您正在使用perl并且您将所有行读成一个字符串,请不要忘记在正则表达式中设置“m”选项(表示“将字符串视为多行”)。
哦,Regex Coach是你的免费朋友。