繁体   English   中英

将字符串拆分为单词和标点符号,但不要拆分为内部标点符号

[英]Split string into words and punctuation but don't split on internal punctuation

我有一根绳子There is a boy's puppy. Really? There is a boy's puppy. Really? . 我需要找到外部标点符号并将它们从附加的单词中分离出来并将它们视为另一个单词。 输出将是:

  • boy's将是一个词(内部标点符号)
  • puppy. 将是两个词, puppy.
  • Really? 将是两个词, Really?

我的代码根据外部标点符号拆分单词,但我希望它们作为单独的单词。

String[] Res = word.split("[\\p{Punct}\\s]+");

我怎样才能做到这一点?

你想对你的 reg ex 做的是使用一个非捕获组,以便它成为输出的一部分,所以在 reg ex 中,我有两个用 OR ( | ) 分隔的组,其中第一个是捕获,第二个是是非捕获。 我不确定我是否在我的非捕获组(?=X)包含了您想要的所有外部标点符号。

String word = "There is a boy's puppy. Really?";
String[] res = word.split("(\\s+)|(?=[\\.\\?])");

for (String s: res ) {
    System.out.print("[" + s + "]");
} 

输出是

[那里][是][a][男孩的][小狗][.][真的][?]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM