Chcę dopasować konkretną frazę zakończoną lub nie z wykrzyknikiem.

Zrobiłem ten regex, który powinien pasować tylko Lorem Ipsum i Lorem Ipsum!:

/(?:Lorem Ipsum|Lorem Ipsum!)\b/

Ale nie działa z Lorem Ipsum! (z wykrzyknikiem).

Edytuj: Powinien pasować tylko z Lorem Ipsum i nic więcej, ani {x1}} i nic innego, mam na myśli, że nie powinien być zgodny z Lorem Ipsum!eeeee

0
user7122093 27 czerwiec 2017, 13:27

4 odpowiedzi

Najlepsza odpowiedź

Użyj tego:

/Lorem Ipsum!?(?=\s|$)/g

Wykorzystuje lookhead, aby sprawdzić, czy postać po ostatniej postaci (! lub m) jest spacja \s lub koniec linii $.

Uwaga 1: Dodaj g, aby dopasować wszystkie zdarzenia, a modyfikator i do zignorowania obudowy.

Regex101 Przykład .

1
ibrahim mahrir 27 czerwiec 2017, 10:47

Powodem /prefix|prefix with suffix/ nie działa, jest to, że większość silników Regex preferuje najwięcej lecznika na alteracji. Po prostu zmień kolejność powinna działać.

Jednakże, jak sugerowali inni, dokonując opcjonalnie wykrzyknikiem, jest niezwykle bardziej czytelnym rozwiązaniem.

/Lorem Ipsum!?$/

Ponieważ najwyraźniej naprawdę chcesz zakotwiczyć do końca linii, powinieneś użyć $ na końcu, a nie \b.

0
tripleee 27 czerwiec 2017, 10:45

Spróbuj z:

/lorem ipsum[!]?/

Ceatsheet można znaleźć w Regex i przetestuj je: http://www.regexr.com

0
Leyre 27 czerwiec 2017, 10:36

Co powiesz na to:

/Lorem Ipsum!?\b/
0
lute 27 czerwiec 2017, 10:32