Regex pasuje do wszystkiego po znaku zapytania?


125

Mam kanał w Yahoo Pipes i chcę dopasować wszystko po znaku zapytania.

Do tej pory wymyśliłem, jak dopasować znak zapytania za pomocą…

\?

Teraz wystarczy dopasować wszystko, co jest po znaku zapytania.


2
\?.*dopasowuje wszystko (łącznie z pustym ciągiem) po ?.
chaczik

Jakiego języka programowania używasz?
Mark Byers

1
Dla tych, którzy używają Javy, jest to"\\?"
CodyBugstein

Odpowiedzi:


251
\?(.*)

Chcesz zawartość pierwszej grupy przechwytywania.


15
@ Zaznacz, jeśli tego właśnie potrzebujesz (mimo że to pytanie jest stare!), Zaznacz to jako odpowiedź.
Pieter VDE,

5
@Dreamonic Nie myśl, że to się dzieje :(
Starkers

4
@Starkers Masz rację. To się nie wydarzy. Mark nie był od tamtej pory Feb 5 '11 at 10:41. Nadal dobrze jest zwracać uwagę na każdą otrzymaną zmianę. Może ktoś dowie się od Dreamonic wskazując na to.
DutGRIFF

1
jak uchwyciłbyś treść po ostatnim znaku zapytania? chcę „zakotwiczyć” od tego momentu - nie jestem pewien, czy „kotwica” to właściwe słowo.
BKSpurgeon

2
@BKSpurgeon pierwsza grupa przechwytywania w ^. * \? ([^?] *) $ Powinna działać
thejh

61

Spróbuj tego:

\?(.*)

Nawiasy to grupa przechwytywania, której można użyć do wyodrębnienia interesującej nas części ciągu.

Jeśli łańcuch może zawierać nowe wiersze, może być konieczne użycie modyfikatora „kropka wszystko”, aby umożliwić dopasowanie kropki do znaku nowego wiersza. To, czy musisz to zrobić i jak to zrobić, zależy od języka, którego używasz. Wygląda na to, że w swoim pytaniu zapomniałeś wspomnieć o języku programowania, którego używasz.

Inną alternatywą, której możesz użyć, jeśli twój język obsługuje asercje lookbehind o stałej szerokości, to:

(?<=\?).*

Och, stała szerokość? Czy mogę zajrzeć za coś takiego? Tematy: kod, programowanie, projektowanie Więc chcę zaznaczyć dwukropek i spojrzeć w tył, aż do pełnego T tematów i do końca w wierszu? (w tym przypadku koniec linii to „projekt”.
Mark

@Mark: Jakiego języka używasz?
Mark Byers

Używam Yahoo Pipes, który z wyjątkiem wyrażenia regularnego. Otrzymałem odpowiedź na to pytanie i teraz szukam wyrażenia regularnego, które wybiera 6 znaków za dwukropkiem i tyle samo (wszystkich) do przodu ..
Mark

@Mark: Sprawdziłem twoją listę pytań, ale nie widzę twojego nowego. Czy na pewno to opublikowałeś?
Mark Byers,

Za kilka chwil ponownie zadam to nowe pytanie. Myślę, że najlepiej będzie trzymać moje pytania oddzielnie i naprawdę powinienem był zadać oba w tym samym czasie. Dzięki
Mark

36

Dzięki technice pozytywnego lookbehind :

(?<=\?).*

(Szukamy tutaj tekstu poprzedzonego znakiem zapytania)

Input: derpderp?mystring blahbeh
Output: mystring blahbeh

Przykład

Zasadniczo ?<=jest to konstrukcja grupowa, która wymaga znaku zapytania uciekającego przed wykonaniem jakiegokolwiek dopasowania.

Działają naprawdę dobrze, ale nie wszystkie implementacje je obsługują.


13
\?(.*)$

Jeśli chcesz dopasować wszystkie znaki po „?” możesz użyć grupy, aby dopasować dowolny znak, i lepiej użyj znaku „$”, aby wskazać koniec linii.


1
W większości implementacji wyrażeń regularnych .domyślnie nie pasuje do znaku nowego wiersza. W rezultacie nawet bez znaku końca wiersza w wyrażeniu dopasowałby się do końca wiersza.
Mark Byers,

2

Sprawdź tę stronę: http://rubular.com/ W zasadzie witryna pozwala na wprowadzenie przykładowego tekstu (tego, czego szukałbyś w swojej witrynie), a następnie podczas budowania wyrażenia regularnego podświetli to, co jest dopasowywane czas rzeczywisty.


Dzięki za to, czy wiesz, jak dopasować okrężnicę? A pewna liczba znaków przed okrężnicą?
Marka

/([a-zA-Z]{4}):/zagra Test: Welcomei zgarnieTest
Austin Lin

0

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

Czasami jest to złe w użyciu, gdy chcesz wybrać, co jeszcze chcesz usunąć między „” i nie możesz użyć tego więcej niż dwa razy w jednym ciągu. Wszystko, co robi, to wybiera to, czego nie ma pomiędzy "" i zastępuje to niczym.

Nawet dla mnie jest to trochę zagmatwane, ale spróbuję to wyjaśnić. ^.+?(nie coś OPCJA) do pierwszej "następnie |Albo / stop (wciąż bada, co to naprawdę znaczy) do / z ^.wybrał nic aż 2 przed "użyciem ( |Stop / AT). I wybierz wszystko, co nastąpi po. +.


Zastanów się nad dodaniem opisu swojego kodu, abyśmy wiedzieli, co robi i dlaczego.
Pika the Wizard of the Whales
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.