Regex 正则匹配常数

Regex 正则匹配常数,regex,Regex,我在使用正则表达式时遇到了一些问题,有人能帮我处理正则表达式吗 我想在这些页面上安装了此行的网站源中匹配以下内容: 代码应始终匹配此精确匹配(它是一个常量): htstring.match(/\/ig); 我的问题似乎是逃避“在正则表达式中” 任何帮助都将不胜感激 谢谢如果您使用的是.NET,则可以转义字符串: var matchMe = "<img src=\"http://www.domain.com/test.asp\" width=\"1\" height=\"1\" />

我在使用正则表达式时遇到了一些问题,有人能帮我处理正则表达式吗

我想在这些页面上安装了此行的网站源中匹配以下内容:

代码应始终匹配此精确匹配(它是一个常量):


htstring.match(/\/ig);
我的问题似乎是逃避“在正则表达式中”

任何帮助都将不胜感激


谢谢

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

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

不过,看起来您没有使用.NET。我认为您不必像那样转义引号。事实上,在您的模式中,我知道您应该转义的字符只有句点
和正斜杠
/

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

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

不过,看起来你不是在使用.NET。我认为你不必像那样转义引号。事实上,在你的模式中,我知道你应该转义的字符只有句点
和正斜杠
/

,你不需要转义它们


但是你确实需要用反斜杠避开句点(.)。

你不需要避开句点


但是您确实需要用反斜杠转义句点(.)。

您只需要转义正斜杠和句点

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

您应该只需要转义正斜杠和句点

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

regexp的具体行为取决于您的语言使用的引擎。并非所有的regexp引擎都是相同的

也就是说,您似乎正在逃避匹配regexp的结尾:

/>/免疫球蛋白

应该是

/>/免疫球蛋白

此外,您可能不希望使用双引号,例如=“”htt should=“htt


internet上有可用的正则表达式测试程序,其中一个位于

确切地说,regexp的行为取决于您的语言使用的引擎。并非所有的regexp引擎都是相同的

也就是说,您似乎正在逃避匹配regexp的结尾:

/>/免疫球蛋白

应该是

/>/免疫球蛋白

此外,您可能不希望使用双引号,例如=“”htt should=“htt


互联网上有可用的正则表达式测试程序,其中一个是在

如果字符串是常量,你不需要使用正则表达式。我在你的正则表达式中没有看到任何是“regexy”的东西-例如,除了常量字符串之外什么都没有,所以只使用字符串是最简单的

另外,您使用的是什么编程语言?从语法上看,我猜它是Ruby-但这只是一个猜测,因此下面的语法可能不适合您

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

如果字符串是常量,则不需要使用正则表达式。我在正则表达式中没有看到任何“regexy”-例如,只有常量字符串,因此仅使用字符串将是最简单的

另外,您使用的是什么编程语言?从语法上看,我猜它是Ruby-但这只是一个猜测,因此下面的语法可能不适合您

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

当您尝试匹配变体时,正则表达式很有用。例如,如果您的标记是常量,除了“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

“”。匹配(“”)
=> #
如果您想匹配细微的变化(例如,空格并不总是一个空格,有时是1个空格,有时是2个,其他3个,等等),那么您需要一个正则表达式,而不是字符串,但是当前正则表达式也不会匹配,因为它只是进行精确匹配(因为它根本不使用任何正则表达式的东西——它也可以是一个字符串。)例如,“img”后面的2个空格:

“”。匹配(//)
=>零
但是一个实际使用正则表达式幂和特殊正则表达式字符的正则表达式将匹配-注意“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或其他任何语言。

例如,如果您的标记除了“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

“”。匹配(“”)
=> #
如果您想匹配细微的变化(例如,空格并不总是一个空格,有时是1个空格,有时是2个,其他3个,等等),那么您需要一个正则表达式,而不是字符串,但是当前正则表达式也不会匹配,因为它只是进行精确匹配(因为它根本不使用任何正则表达式的东西——它也可以是一个字符串。)例如,“img”后面的2个空格:

“”。匹配(//)
=>零
但是一个实际使用正则表达式幂和特殊正则表达式字符的正则表达式将匹配-注意“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#o