2013-03-20 229 views
0

我有這樣的正則表達式正則表達式 - 排除

(?!L[aAOo]s\b|Se\b|El\b|La\b|Lo\b|Los\b|Las\b|Este\b|ese\b|Aquel\b|Esta\b|Esa\b|Aquella\b|Estos\b|Esos\b|Aquellos\b|Estas\b|Esas\b|Aquellas\b|Mi\b|Tu\b|Su\b|Mis\b|Tus\b|sus\b|Mio\b|Mia\b|Tuyo\b|Tuya\b|Suyo\b|Suya\b|algún\b|alguna\b|algunos\b|algunas\b|ningún\b|ninguna\b|ningunos\b|ningunas\b|bastante\b|bastantes\b|otro\b|otra\b|otros\b|otras\b|cierto\b|cierta\b|ciertos\b|ciertas\b|poco\b|poca\b|pocos\b|pocas\b|cualquier\b|cualquiera\b|cualesquiera\b|demasiado\b|demasiada\b|demasiados\b|demasiadas\b|tal\b|tales\b|escasos\b|escasas\b|tanto\b|tanta\b|tantos\b|tantas\b|cada\b|todo\b|toda\b|todos\b|todas\b|más\b|menos\b|unos\b|unas\b|mucho\b|muchas\b|muchos\b|muchas\b|Un\b|De\b|En\b|Si\b|SALUD\b)[A-Z][a-zA-ZÑÁÉÍÓÚáéíóúñ]+ 

是排除所有的單詞,並接受資本單詞和單詞,並開始資本字。 我不能添加字SALUD被排除,爲什麼?

我想在這裏http://gskinner.com/RegExr/

+2

我不明白你想要什麼。請列舉您想要匹配的內容以及您想要匹配的內容。另外你tegex有一些使用邏輯OR的基本錯誤:你需要使用括號。此外,你的正則表達式是非常漫長的 - 只顯示儘可能少的術語來展示問題。請參閱[SSCCE](http://SSCCE.org) – Bohemian 2013-03-20 20:09:53

+0

您所擁有的確確實實將「SALUD」排除在外。我將匹配來自「SALUD」的「ALUD」,並且不會排除「Salud」。另外,值得注意的是,有很大一部分正則表達式排除了所有小寫字母,而正則表達式無論如何都不會與正則表達式匹配。 – femtoRgon 2013-03-20 20:36:16

+0

首先感謝和抱歉我的英語和短信息。 我所需要的是: 1-匹配所有資本WORDS 2-比賽的第一個字母資本 3-比賽與字母之間的資本文字和點的所有單詞,像FMI 4-包含該字母的所有單詞áéíóúÁÉÍÓÚÑñ 012- 5-列出首字母大寫的單詞,如下所示:En La El Ese 6-列出所有字母爲大寫的單詞列表,例如SALUD – Nicopag 2013-03-21 01:06:26

回答

0

適用\b[A-ZÁÉÍÓÚÑ](([.]?[A-ZÁÉÍÓÚÑ])*|[a-záéíóúñ]*)\b根據您的要求1-4相匹配的話。通過增強這個正則表達式,沒有合理的方式從列表5,6中排除匹配。你寧願測試比賽對字典或第二個正則表達式包含所有'禁止'的條款作爲替代品。請記住添加開始/結束標記以避免不必要的部分匹配。

^(El|La|...|SALUD)$(替換用的其他所有列入黑名單的話交替省略號)

+0

那些NFC或NFD? – tchrist 2013-03-23 00:03:32

+0

指定代碼點的方式,以nfc爲單位;據我所知,每一個表演角色都有一個相同的nfd表示。無論正則表達式匹配的字符串的實際表示如何,正則表達式引擎的責任是確保不同規範化策略下的代碼點等價匹配;如果由於nfc/nfd差異而存在不匹配的情況,則可以通過指定等效的代碼點序列作爲macthing選項來解決它們;無可否認,這將變得醜陋。 – collapsar 2013-03-23 00:35:55

+0

您必須將字符串轉換爲NFC然後才能正常工作。它不會將模式轉換爲NFD,否則你的角色類將會變得棘手。正則表達式引擎也無法爲你做到這一點。另外,由於這是西班牙語,看起來OP似乎忘了'ü'和'Ü'也會發生。這種事情通常更好地使用Unicode正則表達式屬性,比如'\ pL'或者甚至是'\ X',如果有的話。 – tchrist 2013-03-23 01:20:24