我是正则表达式的新手,而且说实话它让我很困惑。我需要在所述字符串中达到某个字符后抓取字符串。我认为最简单的方法就是使用正则表达式,但就像我说的那样我很新。任何人都可以帮我这个或指出我正确的方向吗?
例如: 我需要检查字符串“23444:thisstring”并将“thisstring”保存为新字符串。
答案 0 :(得分:4)
如果这是你的字符串:
I'm very new at regex, and to be completely honest it confounds me
并且你想要在第一个“c”之后抓取所有内容,然后这个正则表达式将起作用:
/c(.*)/s
它将在第一个匹配的组中返回此匹配:
"ompletely honest it confounds me"
在此处使用正则表达式测试器进行尝试:regex tester
说明:
c
是您要找的角色.*
(与/s
相结合)匹配所有内容(.*)
捕获.*
匹配的内容,使其在$1
中可用并在列表上下文中返回。答案 1 :(得分:1)
用于删除某个字符前的字符的正则表达式!
您可以使用这样的前瞻
.*(?=x)
其中x是特定字符或单词或字符串。{使用.
,$
,^
,*
,+
等字符具有特殊含义在正则表达式中所以不要忘记在x}
修改强>
您的样本字符串将是
.*(?=thisstring)
.*
匹配0到多个字符,直到thisisstring
答案 2 :(得分:0)
这是一个用于匹配“之前”
之后的所有内容的单行解决方案print $1."\n" if "beforeafter" =~ m/before(.*)/;
编辑: 虽然使用lookbehind是可能的,但它不是必需的。分组提供了一种更简单的解决方案。
答案 3 :(得分:0)
要获取之前的字符串:在您的示例中,您必须使用[^:][^:]*:\(.*\)
。请注意,您应该至少有一个[^:]
后跟任意数量的[^:]
,后跟一个实际的:,即您要搜索的字符。