【问题标题】:Regexp capital words and exclude range正则表达式大写单词和排除范围
【发布时间】:2013-03-21 12:22:09
【问题描述】:

我需要的是这个:

  1. 匹配所有大写WORDS
  2. 匹配第一个字母Capital的所有单词
  3. 匹配所有大写单词和字母之间的点,如F.M.I
  4. 在成功点 1,2,3 的单词中包含此字母 áéíóúÁÉÍÓÚÑñ
  5. 排除首字母大写的单词列表,如下所示:En La El Los Ese
  6. 排除所有字母大写的单词列表,例如SALUD

【问题讨论】:

  • 您能告诉我们您的尝试吗?谢谢。这些是一些可以用谷歌搜索的简单问题。正如一些人提醒:所有大写字母:/^[A-Z]+$/ 首字母大写:/^[A-Z]/ 我建议您对其余部分进行更多研究。
  • 我试试这个 preg_match_all("/(?!L[aAOo]s\b|Se\b|El\b|La\b|Lo\b|Los\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|故事\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|Un\b|De\b|En\b|Si\b)[A-Z ][a-zA-ZÑÁÉÍÓÚáéíóúñ]+/", $titulo_copete, $match_todas);但我不能排除所有大写字母的单词,比如 SALUD。为什么以及如何做到这一点?
  • 如何 - 正如 Naveed S 所回答的那样。 :) 为什么 - 我希望我知道。
  • @user2088434 F.á.M.I 是否有效?

标签: regex


【解决方案1】:

^(([A-Z](\.[A-Z])+)|([A-Z][A-Za-z]+))$ 匹配首字母大写/所有大写字母/大写字母以点分隔

它的作用是

  • ([A-Z](\.[A-Z])+) 匹配一个大写字母后跟一个或多个出现的模式一个点后跟一个大写字母 - 第三个要求

  • ([A-Z][A-Za-z]+) 匹配一个大写字母后跟一个或多个字母(也允许单个大写字母,将 + 替换为 *) - 第一个和第二个要求

如果第一个字母是大写字母,要允许字符 áéíóúÁÉÍÓÚÑñ,只需将它们包含在字符类中

([A-Z][A-Za-záéíóúÁÉÍÓÚÑñ]+)

为了排除某些词,您可以使用否定前瞻,例如

^(?!SALUD)(?!Los)(([A-Z](\.[A-Z])+)|([A-Z][A-Za-záéíóúÁÉÍÓÚÑñ]+))$

避免使用 SALUD 和 Los 这两个词。

  • (?!SALUD) 确保以下字符序列不是 SALUD 并且同样是 (?!Los)

我没有很好地满足你的第四个要求。

http://www.regular-expressions.info/ 是学习正则表达式的好地方。

如果你想匹配而不考虑开始和结束删除锚点。

【讨论】:

  • 嗨,这不是必须以该规范开始和结束的。
  • @user2088434 然后删除锚 ^ 和 $
  • 例如我有这样一行:En este dia SOLEADO en el M.S.P hubo Accidentes en la Salud。 Pero la SALUD 没有问题。从这里我需要:排除 En 和 SALUD。我需要匹配:SOLEADO M.S.P Accidentes Salud Pero。用你的例子不起作用。第 4 点意味着我可以匹配像这样的单词 NIÑO 或 Niño。谢谢
  • @user2088434 从第三个正则表达式中删除锚点可能符合您的要求
  • 这样吗? (?!SALUD)(?!Los)(([A-Z](\.[A-Z])+)​​|([A-Z][A-Za-z]+))
【解决方案2】:

我认为这可能有效 \b(?!SALUD)(?!Los)((A-Z+)|([A-Z][A-Za-záéíóúÁÉÍÓÚÑñ]+))

【讨论】:

    猜你喜欢
    • 2016-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-20
    • 2017-03-13
    • 2019-04-30
    相关资源
    最近更新 更多