Как изменить это регулярное выражение, чтобы оно не учитывало регистр (ищет тег src) - PullRequest
0 голосов
/ 09 июля 2009
Regualar expression: <img[^>]+src\s*=\s*['"]([^'"]+)['"][^>]*>

Это прекрасно работает, когда 'src' в нижнем регистре и управляет одинарными и двойными кавычками. Я хотел бы, чтобы это выражение возвращало совпадения для следующих тестовых данных

1. <html><img src ="kk.gif" alt="text"/></html>
2. <html><img Src ="kk.gif" alt="text"/></html>
3. <html><img sRC ="kk.gif" alt="text"/></html> (any charcter in 'src' can be uppercase/lowercase)
4. <html><img SRC ="kk.gif" alt="text"/></html>
5. <html><img src ='kk.gif' alt="text"/></html>

Ответы [ 5 ]

7 голосов
/ 09 июля 2009

Создайте шаблон с флагом CASE_INSENSITIVE. См. Pattern.compile(String, int). Это повлияет на всю строку, что также означает img.

Или дешевый способ, измените src на [Ss][Rr][Cc]. Это повлияет только на часть src.

2 голосов
/ 09 июля 2009

Мне кажется, что если вы хотите обрабатывать HTML, лучше всего использовать настоящий анализатор HTML.

Хотя я не знаком с Java, кажется, есть из чего выбирать: парсеры HTML с открытым исходным кодом в Java .

Это позволит вам иметь дело со случаями, такими как другой атрибут, предшествующий src и включающий символ «>», который является допустимым HTML, или атрибут src, включающий в себя кавычку, и, возможно, некоторые другие маловероятные, но возможные хитрости.

1 голос
/ 09 июля 2009

Вы можете установить выражение в регистр insesitve, используя "(? I)"

Regular expression: (?i)<img[^>]+src\s*=\s*['"]([^'"]+)['"][^>]*>

только для части выражения, используйте "(? I: part)"

Regular expression: <img[^>]+(?i:src)\s*=\s*['"]([^'"]+)['"][^>]*>

или просто сделайте это, используя второй аргумент Pattern.compile

Pattern p = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);

[]] * * 1 010

0 голосов
/ 09 июля 2009

с макушки головы:
Вы можете заменить src на [S|s][R|r][C|c], если хотите нечувствительность к регистру применяется к src.

KT

0 голосов
/ 09 июля 2009

Взгляните здесь

Вы должны установить нечувствительность к регистру в конструкторе шаблона.

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