Regex соответствует всему после вопросительного знака?


125

У меня есть канал в Yahoo Pipes, и я хочу сопоставить все после вопросительного знака.

Пока что я понял, как сопоставить вопросительный знак с помощью ..

\?

Теперь просто сопоставить все, что находится после / после вопросительного знака.


2
\?.*соответствует всему (включая пустую строку) после ?.
хачик

Какой язык программирования вы используете?
Марк Байерс,

1
Для тех, кто использует Java, это"\\?"
CodyBugstein

Ответы:


251
\?(.*)

Вам нужно содержимое первой группы захвата.


15
@ Отметьте, если это то, что вам нужно (даже если вопрос старый!), Отметьте это как ответ.
Pieter VDE

5
@Dreamonic Не думаю, что это происходит :(
Старкерс

4
@Starkers Вы правы. Этого не произойдет. Марка с тех пор не было Feb 5 '11 at 10:41. По-прежнему хорошо отмечать каждое изменение, которое мы получаем. Может быть, кто-то научится этому у Dreamonic.
DutGRIFF

1
как бы вы записали контент после последнего вопросительного знака? Я хочу «привязать» после этого - я не уверен, что якорь - правильное слово.
BKSpurgeon

2
@BKSpurgeon первая группа захвата в ^. * \? ([^?] *) $ Должна работать
thejh

61

Попробуй это:

\?(.*)

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

Если строка может содержать новые строки, вам, возможно, придется использовать модификатор «точка все», чтобы точка соответствовала символу новой строки. Нужно ли вам это делать и как это делать, зависит от языка, который вы используете. Похоже, что вы забыли упомянуть язык программирования, который используете в своем вопросе.

Другой альтернативой, которую вы можете использовать, если ваш язык поддерживает утверждения просмотра назад с фиксированной шириной, является:

(?<=\?).*

О фиксированной ширине? Могу я посмотреть что-нибудь в этом роде? Темы: код, программирование, дизайн Итак, я хочу выбрать двоеточие и заглянуть назад до конца тем и до конца строки? (в данном случае конец строки - «дизайн».
Марк

@Mark: Какой язык вы используете?
Марк Байерс,

Я использую Yahoo Pipes, за исключением регулярного выражения. Я получил ответ на этот вопрос и теперь ищу регулярное выражение, которое выбирает 6 символов после двоеточия и столько же (всех) вперед ..
Марк

@Mark: Я проверил ваш список вопросов, но не вижу вашего нового. Вы уверены, что разместили это?
Марк Байерс,

Я задам этот новый вопрос еще раз через несколько минут. Думаю, лучше всего держать мои вопросы отдельно и действительно нужно было задавать оба одновременно. Спасибо
Марк

36

С помощью техники позитивного просмотра назад :

(?<=\?).*

(Здесь мы ищем текст, которому предшествует вопросительный знак)

Input: derpderp?mystring blahbeh
Output: mystring blahbeh

пример

По сути, ?<=это групповая конструкция, которая требует экранированного вопросительного знака, прежде чем может быть найдено какое-либо совпадение.

Они работают очень хорошо, но не все реализации их поддерживают.


13
\?(.*)$

Если вы хотите сопоставить все символы после "?" вы можете использовать группу для соответствия любому символу, и вам лучше использовать знак «$», чтобы указать конец строки.


1
В большинстве реализаций регулярных выражений .по умолчанию не соответствует символу новой строки. В результате даже без символа конца строки в выражении он будет соответствовать до конца строки.
Марк Байерс,

2

Посетите этот сайт: http://rubular.com/ В основном сайт позволяет вам ввести пример текста (то, что вы ищете на своем сайте), а затем, когда вы создадите регулярное выражение, оно будет выделять то, что соответствует в реальном времени.


Спасибо за это, вы знаете, как сопоставить двоеточие? А какое количество символов перед двоеточием?
Марк

/([a-zA-Z]{4}):/будет соответствовать Test: Welcomeи схватитьTest
Остин Лин

0

str.replace(/^.+?\"|^.|\".+/, '');

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

Даже для меня это немного сбивает с толку, но я не буду пытаться это объяснить. ^.+?(ничего НЕОБЯЗАТЕЛЬНО) до первого, "затем |Or / stop (все еще исследуя, что это на самом деле означает), пока / at ^.не выбрал ничего до второго "использования ( |stop / at). И выберите все, что идет после. +.


Пожалуйста, подумайте о добавлении описания вашего кода, чтобы мы знали, что он делает и почему.
Пика, волшебник китов,
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.