Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.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 如何从字符串中转义\s(空格字符)?_Java_Regex - Fatal编程技术网

Java 如何从字符串中转义\s(空格字符)?

Java 如何从字符串中转义\s(空格字符)?,java,regex,Java,Regex,我需要的是对字符串中的每个单词进行转义,并对每个特殊字符进行转义,如:!,?。'@。我试过的是: public class Solution { public static void main(String[] args) { Scanner scan = new Scanner(System.in); Pattern pat = Pattern.compile("[!|,|?|.|_|'|@]"); String a

我需要的是对字符串中的每个单词进行转义,并对每个特殊字符进行转义,如:!,?。'@。我试过的是:

public class Solution 
{
    public static void main(String[] args) 
    {    
        Scanner scan = new Scanner(System.in);
        Pattern pat = Pattern.compile("[!|,|?|.|_|'|@]");
        String a = scan.nextLine();
        scan.close();
        String[] part = pat.split(a);
        System.out.println(part.length);
        for(String p: part)
           System.out.println(p);
    }
}
虽然这确实会转义特殊字符,但我无法找到让正则表达式匹配每个单词之间空格的方法。 此外,我还尝试在正则表达式之后使用
\s
\\s

例如:
这条狗是一只非常懒的狗,不是吗?

输出应为:

The  
dog  
is  
a  
very  
lazy  
dog  
isn  
t  
he  
[…]
描述单个字符的范围,而不是两个字符(我们可以允许使用诸如
+
*
{nim,max}
之类的量词重复字符,但这里的情况并非如此)

另外,您不需要在
[…]
内部使用
|
,因为它是简单字符,而不是OR运算符。所以
[a | b]
并不意味着
a
b
,它代表字符
a
(因此任何类似
重复都将代表另一个
c

根据您提供的示例,您可能正在寻找:

Pattern pat = Pattern.compile("[!,?._'@\\s]+");
或者因为这可能更具可读性

Pattern pat = Pattern.compile("([!,?._'@]|\\s)+");
您需要在
[…]
之外使用
运算符
,并将
\s
作为
“\\s
写入,因为
\
也是字符串文本中的特殊字符(例如,它可以用于创建制表符
\t
),因此需要转义


我用
(..)
包装了整个表达式,以创建一个可以表示所有分隔符的组。这允许我使用
+
(表示“一个或多个事件”的量词)现在,您可以将正则表达式看作是拆分的单个分隔符,.
,这将确保对几个连续分隔符的整个表达式进行拆分,而不是分别对每个分隔符进行拆分。因此,与
“a,.b”
->
[“a,”,“b”]
相比,现在我们将得到
[“a”,“b”]

我认为您对“|”的看法是正确的性格但这仍然不能转义字符串中的每个空格。你说的“转义字符串中的每个空格”是什么意思?您能更新您的问题并发布您的输入和预期结果吗?@MinaF让我知道编辑的版本是否适合您。如果有,将尝试添加解释。