Regex не равно нескольким строкам? [Дубликат]

В моем случае возникла ошибка, потому что я дал имя исходного файла вместо имени класса.

Нам нужно предоставить имя класса, содержащее основной метод, интерпретатору.

152
задан Yu Hao 20 July 2013 в 11:16
поделиться

7 ответов

Не эксперт по регулярному выражению, но я думаю, что с самого начала вы могли бы использовать негативный взгляд. ^(?!foo).*$ не должен соответствовать чему-либо, начиная с foo.

135
ответ дан Cat Plus Plus 26 August 2018 в 13:52
поделиться

В python:

>>> import re
>>> p='^(?!index\.php\?[0-9]+).*$'
>>> s1='index.php?12345'
>>> re.match(p,s1)
>>> s2='index.html?12345'
>>> re.match(p,s2)
<_sre.SRE_Match object at 0xb7d65fa8>
2
ответ дан AJ. 26 August 2018 в 13:52
поделиться

grep -v в shell

! ~ in perl

Пожалуйста, добавьте больше на другие языки - я отметил это как Community Wiki.

-2
ответ дан Arkadiy 26 August 2018 в 13:52
поделиться

Вы можете поместить ^ в начале набора символов в соответствие с любым, кроме этих символов.

[^=]*

будет соответствовать всем, кроме =

168
ответ дан Firsh 26 August 2018 в 13:52
поделиться

Как не использовать регулярное выражение:

// In PHP
0 !== strpos($string, 'index.php')
-4
ответ дан JP. 26 August 2018 в 13:52
поделиться

Просто сопоставьте /^index\.php/, затем отклоните все, что соответствует ему.

1
ответ дан user 26 August 2018 в 13:52
поделиться

Regex: соответствие всем, кроме:

Демонстрационная заметка: новая строка \n используется внутри отрицательных классов символов в демонстрационных целях, чтобы избежать переполнения соответствия соседней строке. Они не нужны при тестировании отдельных строк.

Якорная заметка: на многих языках используйте \A для определения однозначного начала строки и \z (в Python это \Z, в JavaScript, $ в порядке), чтобы определить самый конец строки.

Примечание: во многих вариантах (но не POSIX, TRE, TCL), . соответствует любому char , но символ новой строки . Убедитесь, что вы используете соответствующий модификатор DOTALL (/s в PCRE / Boost / .NET / Python / Java и /m в Ruby) для . для соответствия любому символу, содержащему новую строку.

Замечание обратной косой черты: на языках, где вы должны объявлять шаблоны со строками C, позволяющими escape-последовательности (например, \n для новой строки), вам нужно удвоить обратную косую черту, ускользающую от специальных символов, чтобы движок мог рассматривать их как буквенные символы (например, в Java , world\. будет объявлен как "world\\." или использовать класс символов: "world[.]"). Используйте исходные строковые литералы (Python r'\bworld\b'), строковые литералы строки C # @"world\." или строковые строковые / регулярные обозначения типа /world\./.

141
ответ дан Wiktor Stribiżew 26 August 2018 в 13:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: