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

125

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

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

\?

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

отметка
источник
2
\?.*соответствует всему (включая пустую строку) после ?.
хачик
Какой язык программирования вы используете?
Марк Байерс,
1
Для тех, кто использует Java, это"\\?"
CodyBugstein

Ответы:

251
\?(.*)

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

thejh
источник
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

пример

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

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

DarkNeuron
источник
13
\?(.*)$

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

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

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

Остин Лин
источник
Спасибо за это, вы знаете, как сопоставить двоеточие? А какое количество символов перед двоеточием?
Марк
/([a-zA-Z]{4}):/будет соответствовать Test: Welcomeи схватитьTest
Остин Лин
0

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

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

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

Kadhem
источник
Пожалуйста, подумайте о добавлении описания вашего кода, чтобы мы знали, что он делает и почему.
Пика, волшебник китов,