正则表达式匹配常量

时间:2009-10-06 16:17:13

标签: regex

我对这个正则表达式有些麻烦,有人可能会帮助我使用正则表达式...

我希望在网页上安装此行的网站来源中匹配以下内容:

代码应始终匹配此完全匹配(它是常量):

<img src="http://www.domain.com/test.asp" width="1" height="1" />



htstring.match(/\<img src\=""http:\/\/www.domain.com\/test.asp"" width=""1"" height=""1"" \/>/ig);

我的问题似乎是逃避了“正则表达式”中的问题

任何帮助将不胜感激!

由于

6 个答案:

答案 0 :(得分:2)

你不需要逃避它们。

但你确实需要逃避时期(。)。用反斜杠。

答案 1 :(得分:2)

当您尝试匹配变体时,正则表达式非常有用。例如,如果您的标记在“src”元素或空格中的域中为之外是常量。 Stefan和Andy是完全正确的,但是你现在拥有的(工作)正则表达式与我上面的答案中的字符串文字没有什么不同。

因此正则表达式和字符串都是等效的,并且都匹配:

'<img src="http://www.domain.com/test.asp" width="1" height="1" />'.match(/<img src="http:\/\/www\.domain\.com\/test\.asp" width="1" height="1" \/>/)
=> #<MatchData:0x5ebbf90>

VS

'<img src="http://www.domain.com/test.asp" width="1" height="1" />'.match('<img src="http://www.domain.com/test\.asp" width="1" height="1" />')
=> #<MatchData:0x5eb6cac>

如果你想匹配微妙的变化(例如,空格并不总是完全一个空格,有时它是1个空格,有时是2个,其他3个等等)那么你需要一个正则表达式,不是一个字符串,但当前的正则表达式也不匹配,因为它只是做一个完全匹配(因为它根本不使用任何正则表达式的东西 - 它可能也是一个字符串)。例如,“img”之后的2个空格:

'<img  src="http://www.domain.com/test.asp" width="1" height="1" />'.match(/<img src="http:\/\/www\.domain\.com\/test\.asp" width="1" height="1" \/>/)
=> nil

但实际上使用带有特殊正则表达式字符的正则表达式的正则表达式将匹配 - 请注意“img”之后的“\ s +”,它将匹配1..n空格字符:

 '<img  src="http://www.domain.com/test.asp" width="1" height="1" />'.match(/<img\s+src="http:\/\/www\.domain\.com\/test\.asp" width="1" height="1" \/>/)
=> #<MatchData:0x5e94fbc>

另外,我上次可能不够明确,但是你指定你正在使用的语言非常重要。正如Tim指出的那样,正则表达式可以在不同的语言之间变化,所以答案可能是正确的但不适用于你取决于你是使用Ruby还是C#或Java还是其他什么。

答案 2 :(得分:1)

正则表达式的行为究竟取决于您的语言使用的引擎。并非所有正则表达式引擎都是相同的。

那就是说,你似乎正在逃避匹配正则表达式的结束:

/&GT; / IG

应该是

/&GT; / IG

另外,您可能不想使用双引号,例如=“”htt应为=“htt

互联网上有正则表达式测试人员,其中一人位于http://www.regular-expressions.info/javascriptexample.html

答案 3 :(得分:1)

如果字符串是常量,则不需要使用正则表达式。我没有在你的正则表达式中看到任何“regexy” - 例如,只有常量字符串,所以只使用字符串是最容易的。

另外,您使用的编程语言是什么?从语法上我猜测它是Ruby - 但这只是猜测,所以下面的语法可能不适合你。

htstring.match('<img src="http://www.domain.com/test.asp" width="1" height="1" />')

答案 4 :(得分:0)

如果您使用的是.NET,则可以转义字符串:

var matchMe = "<img src=\"http://www.domain.com/test.asp\" width=\"1\" height=\"1\" />";
var pattern = Regex.Escape(matchMe);

虽然看起来你不是在使用.NET。我不认为你必须逃避这样的报价。事实上,在你的模式中,我知道你应该逃脱的唯一字符是句点.和正斜杠/

答案 5 :(得分:0)

你应该只需要转义正斜杠和句号。

myRegex = /<img src="http:\/\/www\.domain\.com\/test\.asp" width="1" height="1" \/>/