所以我只是乱搞互联网,发现这个正则表达式非常有趣。
我对这些东西很新,我想今晚完成这个搜索模式。但是,我在$
运算符中很困惑。而且我的关键词应该是在Google上搜索关键字。
正则表达式:
(?<=<RGBA?:(-?\d{1,3},?){3,4}>).*(?=</RGBA?>$)
数据:
<RGBA:255,255,255,2>HEY</RGBA>
<RGB:-1,-25,-3>Is this a typo?</RGB>
<RGB:255,255,255>YOH</RGB>
<RGB:0,1,2>Please let me go here :(</RGB>
<RGBA:0,255,12,255>o my, what to do here?!!!!</RGBA>
hahahah
hehehe2123
<RGB:-0,-0,-0>GET ME</RGB>
这只会获得最后一行GET ME
,但如果我删除$
,结果会如预期的那样但如果string
是连续的(无新行)则会失败。例如:
数据:
<RGBA:255,255,255,2>HEY</RGBA> <RGB:-1,-25,-3>Is this a typo?</RGB>
返回:
HEY</RGBA> <RGB:-1,-25,-3>Is this a typo?
请解释一下,我可以解决这个问题。
PS。 数据(字符串)格式适用于我制作的另一个应用程序
答案 0 :(得分:2)
我认为您可能正在寻找的是这样的:
(?<=<RGBA?:(-?\d{1,3},?){3,4}>).*?(?=</RGBA?>)
?在。*之后使表达式变得懒惰而不是贪婪,所以它不会匹配结束标记。
答案 1 :(得分:1)
$
指定输入的结尾必须与模式匹配。例如,正则表达式
foo$
会匹配
myfoo
但不是
foobar
^
指定输入的开头必须与模式匹配。所以,如果你有正则表达式
^foo
它匹配
foobar
但不是
myfoo
如果你两者合二为一,例如
^foo$
它只匹配模式
foo
所有其他输入都会失败。
答案 2 :(得分:0)
通常$
运算符匹配输入的结尾。例如,
[0-9]+$
会匹配一个或多个数字,但它们必须出现在字符串的末尾。
编辑:在评论中关注您的链接后,$
运算符确实与输入字符串的末尾匹配,这解释了为什么当您保留它时,您只能获得最后一个匹配。
答案 3 :(得分:0)
在大多数语言中,$
默认匹配整个输入字符串的结尾。但是在许多语言中,可以使用称为“多行”的选项来改变其含义。然后,^
和$
分别匹配每个行的开头和结尾。