Константа регулярных выражений - PullRequest
0 голосов
/ 06 октября 2009

У меня возникли проблемы с этим регулярным выражением. Может кто-нибудь помочь мне с регулярным выражением ...

Я хочу сопоставить следующее в источнике веб-сайтов, на которых установлена ​​эта строка на этих страницах:

Код должен всегда соответствовать этому точному совпадению (это константа):

<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 ]

2 голосов
/ 06 октября 2009

Регулярные выражения полезны, когда вы пытаетесь сопоставить варианты. Например, если ваш тег был константой , за исключением для домена в элементе "src" или в пробеле. Стефан и Энди совершенно правы, но имеющееся у вас (работающее) регулярное выражение по-прежнему ничем не отличается от строкового литерала в моем ответе выше.

Таким образом, и регулярное выражение, и строка эквивалентны, и оба совпадают:

'<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>

против

'<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 и т. Д.), Тогда вам нужно регулярное выражение, не строка, но текущее регулярное выражение также не будет совпадать, потому что оно просто выполняет точное соответствие (потому что оно вообще не использует никаких регулярных выражений - это может быть также строка). Например, 2 пробела после "img":

'<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

Но регулярное выражение, фактически использующее силу регулярного выражения со специальными символами регулярного выражения, будет совпадать - обратите внимание на "\ s +" после "img", которое будет соответствовать 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>

Кроме того, в прошлый раз я, возможно, не был достаточно ясен, но очень важно, чтобы вы указали, на каком языке вы работаете. Как указывал Тим, регулярное выражение может варьироваться в зависимости от языка, поэтому ответ может быть правильным, но не работать Вы зависите от того, используете ли вы оба Ruby, C #, Java или что-то еще.

2 голосов
/ 06 октября 2009

Вам не нужно избегать их.

Но вам нужно избегать периодов (.). С обратной косой чертой.

1 голос
/ 06 октября 2009

Если строка является константой, вам не нужно использовать регулярное выражение. Я не вижу в вашем регулярном выражении ничего, что является "регулярным выражением" - например, нет ничего, кроме константной строки, поэтому простое использование строки было бы проще всего.

Кроме того, какой язык программирования вы используете? Исходя из синтаксиса, я догадался, что это был Ruby, но это только предположение, поэтому приведенный ниже синтаксис может не сработать.

htstring.match('<img src="http://www.domain.com/test.asp" width="1" height="1" />')
1 голос
/ 06 октября 2009

Точное поведение регулярного выражения зависит от того, какой движок использует ваш язык. Не все движки регулярных выражений одинаковы.

Тем не менее, кажется, что вы избегаете того, что должно быть концом соответствующего регулярного выражения:

/> / * 1005 мкг *

должно быть

/> / * 1009 мкг *

Кроме того, вы можете не использовать двойные кавычки, например, = "" htt должен быть = "htt

В Интернете доступны тестеры регулярных выражений, один из которых находится по адресу http://www.regular -expressions.info / javascriptexample.html

0 голосов
/ 06 октября 2009

Вам нужно только избегать косых черт и точек.

myRegex = /<img src="http:\/\/www\.domain\.com\/test\.asp" width="1" height="1" \/>/
0 голосов
/ 06 октября 2009

Если вы используете .NET, вы можете экранировать строку:

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

Не похоже, что вы используете .NET. Я не думаю, что вы должны избегать таких цитат. На самом деле, в вашем шаблоне единственные символы, которых я знаю, вы должны избегать, это точка . и косая черта /.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...