/ / REGEX дума в параграф, но не и дума, съдържаща тази дума, освен ако не е множествено число

РЕГЕКС дума в параграф, но не и дума, съдържаща тази дума, освен ако нейното множествено число - регенериране

Подчертавам думите в част от текст.

Ако регексирам „Порт“, думата „Португалски“ също е подчертана, но имам нужда да се маркира „Портове“.

Някакви идеи? Мразя регекс.

Благодаря

Отговори:

3 за отговор № 1

Опитайте нещо подобно:

bports?b

Най- ? означава, че s символът не е задължителен. Най- b в двата края съвпада с граници на думи.

По-общо можете да направите нещо подобно, за да позволите на думите да завършват s, es или ies:

bwhatever(?:s|es|ies)?b

Това е много грубо и има вероятност да получите фалшиви положителни резултати и негативи. Ако искате нещо по-сложно, предполагам, че ще трябва да потърсите подходяща търсачка с пълен текст.


2 за отговор № 2

Най-основният отговор би бил този:

bPort(s?)b

b маркира началото и края на думата. Това съвпада само с "Порт" и "Пристанища". Ако имате нужда от нечувствителни към регистъра съвпадения, използвайте нещо подобно /i модификатор в Perl:

m/bport(s?)b/i

Или, ако искате да отговаряте само на "порт", "Порт", "портове" и "Порти", опитайте

b(P|p)ort(s?)b