Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/402.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,我需要从文本中排除所有符号,除了字母、空格和独立的撇号(如:“'”或“this”is),但撇号保留原样,如果它们是单词的一部分(如:“word'”或“thas”或“word”)。 我尝试了String.replaceAll(“[^a-z'\\s]”,“)方法,似乎我需要在那里添加类似[^([a-z]*'[a-z]+|[a-z]+'[a-z]*]),但我无法生成完整的表达式,而且表达式的第二部分似乎无效 谢谢你的帮助 您可以使用 s.replaceAll(“[^a-zA-Z\\s']”|)(?-除

我需要从文本中排除所有符号,除了字母、空格和独立的撇号(如:“'”或“this”is),但撇号保留原样,如果它们是单词的一部分(如:“word'”或“thas”或“word”)。 我尝试了String
.replaceAll(“[^a-z'\\s]”,“)
方法,似乎我需要在那里添加类似
[^([a-z]*'[a-z]+|[a-z]+'[a-z]*])
,但我无法生成完整的表达式,而且表达式的第二部分似乎无效

谢谢你的帮助

您可以使用

s.replaceAll(“[^a-zA-Z\\s']”|)(?-除ASCII字母、空格和单引号外的任何字符
  • |
    -或
  • (?前面或后面不带非空白字符
  • 见a:

    String s=“'this'是单词”那是单词”;
    
    System.out.println(s.replaceAll(“[^a-zA-Z']”)有点长,很可能有更好的模式,但可能:
    [^[a-zA-Z']]|(?尝试过,但仍然包括独立“”)可能我误解了,我以为你想删除独立的撇号,并保留属于一个单词的撇号。试试
    .replaceAll([^a-zA-Z']s]|\\B“|”\\B“,”)
    JvdV,正确,但是您的选项没有删除独立的“;@WiktorStribiżew,此选项过滤“word”之类的词也没有按预期工作,但我在谷歌上搜索了正面/负面外观,并找到了一个有效的解决方案:
    ”(?@ko4evneg很高兴您终于提出了模式要求:)