Wyrażenie regularne. Banalne, ale czy wykonalne?

1.tu jest dom, a tu barak
2.to jest a tu brak

dotyczy wyrazów “jest” i “brak”

Jak powinien wyglądać wzór RegExp, aby zaznaczał
“jest” w linii gdzie nie ma wyrazu “brak”,
czyli w zdaniu 1.

PS. Aby wykluczyć jednen znak np. “b”
wystarczy umieścić tę literę we wzorze [^b]
A gdy to jest nie jedna litera tylko wyraz?

Zalecam umieścić to zapytanie dziale programowanie: https://forum.dobreprogramy.pl/c/dla-specjalistow/programowanie Tam jest odpowiedzi dział i Ci pomogą.

To jest negacja znaków, nie zadziała dla wyrazów. Dodatkowo znam ^ ma też znaczenie początku linii.

Tutaj masz myślę, że działający tak jak chciałeś przykład: https://regex101.com/r/xPIKxp/1

Na wszelki wypadek wyrażenie wygląda tak:
\(jest)+(?!.*brak.*)\g

Negacją wyrazu jest ?! (negative lookahead) w notacji PCRE więc nie w każdym parserze wyrażeń to przejdzie i trzeba zastosować odpowiednią negację dla niego.

Wielkie dzięki, nie wiedziałem, że można w (?=
znak równości zamienić na wykrzyknik (?!
i tym samym zanegować zbędny wyraz.

Muszę przyznać, że sam nie wiedziałem. Po prostu zacząłem googlować bo problem wydał mi się bardzo interesujący do rozwiązania. Szczerze mówiąc to właśnie czytam czym jest (?= :smiley:, a myślałem, że coś tam ogarniam wyrażenia regularne :stuck_out_tongue:.

Bardzo ciekawy link właśnie znalazłem: http://home.agh.edu.pl/~mkuta/tk/WyrazeniaRegularne.html
Zwłaszcza tabelka z asercjami :slight_smile:.

Dzięki za linka, jest tam trochę nieznanych mnie rzeczy.
Przetestuję to.:grinning:
Nie wszystko nadaje się dla mnie do użytku.
RegEx używam w: VBScript, Total Commander i AkelPad (edytor tekstu).

Wow, dobre. Człowiek całe życie się uczy.