【问题标题】:Regex to split a paragraph after each period but don't split after abbreviations正则表达式在每个句点后拆分一个段落,但在缩写后不拆分
【发布时间】:2014-01-02 07:04:59
【问题描述】:

我需要将一个段落分成句子。所以这意味着在每个句点之后拆分它,但我还必须考虑到句子可以包含缩写,例如 Anniv。柠檬醇。公司等等。我使用lookbehind制作了一个正则表达式来匹配句点之前的任何缩写。我按照如下缩写列表动态创建正则表达式:

    String regex = "(?<!abbrev1)(?<!abbrev2)\\.";
    //abbrev 1 and abbrev 2 are just examples the regex I use is much longer
    //Then I split the paragraph

    paragraph.split(regex);

这可行,但问题是当我有一个像 U.S.A. OR R.A.F. 这样的缩写时,在这种情况下它没有

任何帮助将不胜感激 编辑:我想出了这个 http://regexr.com?37rb3

但是 id 在 Java 中不起作用,任何想法为什么它不起作用?

【问题讨论】:

  • 我怀疑 RegEx 是否适合这个。它需要某种类型的解析器。正则表达式很强大,但它并不神奇。
  • [A-Z] 进行负面回顾怎么样?
  • 好吧,我不能真正使用 [A-Z],因为缩写非常随机
  • 对如何进行这种拆分有什么建议吗?
  • 有没有像A .B. C这样的缩写(.附近有空格)不应该被拆分?

标签: java regex


【解决方案1】:

我建议您在缩写中包含句点,而不是单独表示它们。或者,您可以使用当前的正则表达式样式将 U.S.A. 表示为 U.S.A

【讨论】:

    猜你喜欢
    • 2020-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-07
    • 1970-01-01
    相关资源
    最近更新 更多