2013-03-20 189 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