Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 正则表达式匹配句子_Java_Regex - Fatal编程技术网

Java 正则表达式匹配句子

Java 正则表达式匹配句子,java,regex,Java,Regex,如何匹配“Hello world”或“Hello world”形式的句子。该句可包含“-/位0-9”。任何信息都会对我很有帮助。谢谢。如果你所说的句子是指以标点符号结尾的东西,试试这个:(.*?[.?!]) 说明: *匹配任何字符串。添加?使其成为非贪婪匹配(匹配尽可能最小的字符串) [.?!]匹配三个标点符号中的任意一个 这一个会做得很好。我对句子的定义是:句子以非空格开头,以句号、感叹号或问号(或字符串结尾)结尾。结尾标点符号后面可能有结束语 import java.util.regex

如何匹配“Hello world”或“Hello world”形式的句子。该句可包含“-/位0-9”。任何信息都会对我很有帮助。谢谢。

如果你所说的句子是指以标点符号结尾的东西,试试这个:
(.*?[.?!])

说明:

  • *
    匹配任何字符串。添加
    使其成为非贪婪匹配(匹配尽可能最小的字符串)
  • [.?!]
    匹配三个标点符号中的任意一个

    • 这一个会做得很好。我对句子的定义是:句子以非空格开头,以句号、感叹号或问号(或字符串结尾)结尾。结尾标点符号后面可能有结束语

      import java.util.regex.*;
      公开课考试{
      公共静态void main(字符串[]args){
      字符串主题字符串=
      “这是一句话。”+
      “这也是”!这是吗?”+
      “这是‘stackoverflow.com!'”+
      “你好,世界”;
      String[]句=null;
      模式re=Pattern.compile(
      “#匹配以标点或EOS结尾的句子。\n”+
      [^.!?\\s]#第一个字符是非点状的,非ws\n+
      “[^.!?]*#贪婪地消耗多达个标点符号。\n”+
      (?:#用于展开循环的组。\n+
      “[.!?]#(特殊)内部标点符号ok,如果\n”+
      (?!['\“]?\\s |$)#后面不跟ws或EOS。\n+
      “[^.!?]*#贪婪地消耗多达个标点符号。\n”+
      “”*#零或更多(特殊法线*)\n“+
      “[.!?]?#可选结尾标点符号。\n”+
      “['\”]?#可选结束引号。\n”+
      “(?=\\s |$)”,
      Pattern.MULTILINE | Pattern.COMMENTS);
      Matcher-reMatcher=re.Matcher(subjectString);
      while(reMatcher.find()){
      System.out.println(reMatcher.group());
      } 
      }
      }
      
      以下是输出:

      这是一个句子。

      这个也是
      “这是什么?”

      这里是'stackoverflow.com!'
      Hello World


      正确匹配所有这些(最后一句没有结尾标点符号),结果并不像看上去那么容易

      第一个(
      “Hello world”
      )是一个怎样的句子?没有标点符号。@baba你说得对,哈哈。我修复了它。您写道:
      可能包含“-/数字0-9”
      ?不准写信?这个问题令人困惑…@Matt Ball这肯定不是自然语言问题,正则表达式理论中的“句子”是属于正则表达式接受的“语言”的任何输入字符序列。事实上,我发现这是一个非常具有挑战性的问题!(请参阅我答案中的测试数据。)匹配没有标点符号的最后一句话会有点麻烦。这对输入不起作用:
      “我为什么是粉红先生?”
      好的,你让我明白了。现在,您可能需要一个“违规行为”列表,如此,并将其放在一边。不管怎么说,问题已经解决了。如果一个句子是以字母开头的,那么它不应该以大写字母开头吗?100个示例中有1个以大写字母开头,但根本没有字母。@用户未知:可能。但是一个句子可以是你想定义的任何东西。我的定义如上所述。例如,一个句子可能以程序变量的名称开头,该名称以小写字母开头。谢谢。实际上我的问题不完整,因为我写得很匆忙。我应该用一句话来说明我的意思。你的帮助真是值得赞赏。再次感谢。
      x
      应在句首引用。:)@ridgerunner,你能不能再给一个RE,在这种情况下可以排除不完整的句子,比如“Hello World”。并且可以将首字母缩写作为句子的一部分。目前,任何首字母(如Prof.或Mr.)都显示为不同的句子,并将完整的句子分成多个句子。