当前位置: 首页 > 面试题库 >

在Java中使用标点符号和空格等通过正则表达式拆分字符串

易自珍
2023-03-14
问题内容

我有读取到Java应用程序中的文本文件,然后逐行计算其中的单词。现在,我用

String.split([\\p{Punct}\\s+])"

但是我知道我缺少文本文件中的某些单词。例如,单词“不能”应分为两个单词“可以”和“ t”。

逗号和其他标点符号应完全忽略,并视为空白。我一直在尝试了解如何形成更精确的正则表达式来执行此操作,但是在这方面我是新手,因此我需要一些帮助。

就我所描述的目的而言,什么是更好的正则表达式?


问题答案:

您的正则表达式有一个小错误。试试这个:

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

[\\p{Punct}\\s]++字符类内部的表单移到外部。+否则,您也将在a上拆分,并且不要在一行中合并拆分的字符。

所以我得到了这段代码

String Text = "But I know. For example, the word \"can\'t\" should";

String[] Res = Text.split("[\\p{Punct}\\s]+");
System.out.println(Res.length);
for (String s:Res){
    System.out.println(s);
}

这个结果

10
但是

知道
对于
例如


可以
牛逼



哪个应该满足您的要求。

作为替代,您可以使用

String[] Res = Text.split("\\P{L}+");

\\P{L} Means不是具有属性“ Letter”的unicode代码点



 类似资料:
  • 问题内容: 我是regex的新手,我想做的是在特定条件下拆分String,但我不知道该怎么做。 这是样品/条件 我希望字符串被拆分,,,,,, 这可能吗? 问题答案: 如果 确实 需要使用正则表达式,则可能应该使用环顾四周机制,因为您不想 在 此字符 之前 或 之后 进行拆分。 输出:

  • 我有一个在解析XML文档时收到的字符串: 如何使用正则表达式来完成? 多谢帮忙!

  • 使用Java和正则表达式,我想从一行文本中提取字符串。文本可以采用以下格式- 键1(值1)键2(值2) 当使用类型#1时,我能够成功地提取键和值,我可以使用空格分割文本,然后使用以下模式提取键 对于案例#2和案例#3,可以使用复杂的代码逻辑来计算“(”的出现,并将其与空格的出现相匹配,但是,代码变得太长了。当值中也存在空格时,会出现多种复杂情况,因为这样,分割文本就会出现问题。 有没有更好的正则表

  • 问题内容: 我有以下显示这种格式的文件名: 我想提取第二个下划线之后和之前的中间两个时间戳部分。因此,我使用了以下Python正则表达式字符串拆分: 但这在返回的列表中给了我两个额外的空字符串: 如何仅获取两个时间戳信息?即我想要: 问题答案: 不要使用,使用正则表达式/对象的方法。 您甚至可以命名捕获组并在字典中检索它们,尽管您使用的不是。(这种情况下的regex模式将类似于)

  • 我正则表达式有问题。我想使用phppreg_match来确认字符串仅包含大小写字母、数字、空格和标点符号,如… 逗号、句点、加号、破折号、感叹号、冒号、分号、括号 问题:在下面的例子中$regex等于什么? 我看了视频,谷歌了几个小时,仍然不能得到这个权利。 感谢您的任何帮助!

  • 问题内容: 采取以下Java字符串: 我想将该字符串转换为: 有一些Java实用程序会将其转换为“ HW”,但我想保留空白和标点符号。我可以通过拆分字符串并分别处理每个单词来做到这一点,但这太慢了。我正在尝试找到一个正则表达式,在这里我可以抓住一个单词的所有字母,但第一个字母不是?即,抓取“ ello”和“ orld”,然后将其替换为“”。我知道“ \ w”会抓住所有字母,但是有没有办法排除每个单