Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.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 如何检查字符串是否包含'\r'\t''\n';。。。除了空间_Java_Regex - Fatal编程技术网

Java 如何检查字符串是否包含'\r'\t''\n';。。。除了空间

Java 如何检查字符串是否包含'\r'\t''\n';。。。除了空间,java,regex,Java,Regex,如何检查字符串是否包含除空格以外的所有'\r'\t'\n' 例如,String a=“a\nb”,String b=“a b”。我希望字符串a返回true,字符串b返回false 我知道有Character.isWhiteSpace(char c),还有Pattern.compile(“\\s”).matcher(string.find()。但它们都考虑了空间(“”)。我想要的是找出所有转义字符,它们被Character.isWhiteSpace(char c)method认为是空白,除了“”

如何检查字符串是否包含除空格以外的所有'\r'\t'\n'

例如,
String a=“a\nb”
String b=“a b”
。我希望字符串a返回true,字符串b返回false

我知道有
Character.isWhiteSpace(char c)
,还有
Pattern.compile(“\\s”).matcher(string.find()
。但它们都考虑了空间(“”)。我想要的是找出所有转义字符,它们被
Character.isWhiteSpace(char c)
method认为是空白,除了“”

我不想一个字符一个字符地检查,最好是有一个合适的正则表达式,我可以使用like
模式。像这样编译

@Test
    public void testLines() {
        assertTrue(Pattern.compile("[\n\r\t]").matcher("a\nb").find());
        assertFalse(Pattern.compile("[\n\r\t]").matcher("a b").find());
    }
像这样

@Test
    public void testLines() {
        assertTrue(Pattern.compile("[\n\r\t]").matcher("a\nb").find());
        assertFalse(Pattern.compile("[\n\r\t]").matcher("a b").find());
    }

我假设当您说“除空格以外的所有'\r'\t'\n'”时,您的意思是“U+0020以外的任何空白字符”(其中U+0020是一个简单的空格)。这是正确的吗

如果是这样,那么以下正则表达式(通用形式)应该可以工作:

(?! )\s
这将匹配任何不是简单空格的空白字符。这个正则表达式使用


编辑:

正如@Bubletan在中所述,以下正则表达式也将起作用:

[^\S ]
这两个正则表达式是等价的。这是因为
(?!)\s≣ “(不是字符U+0020)和(是空白)”
[^\S]≣ “不是(非空白或字符U+0020)
具有相同的真值表:

Let P(x) be the predicate "x is the character U+0020"
Let Q(x) be the predicate "x is whitespace"

P | Q | (¬P)∧Q | ¬(¬Q∨P)
–– ––– –––––––– ––––––––
T   T      F       F
T   F      T       T
F   T      F       F
F   F      F       F
虽然为了提高效率,您可能最好使用@Bubletan的解决方案(
[^\s]
)。环视通常比其他方法慢

这是您可以实现它的方式:

// Create the pattern.  (do only once)
Pattern pattern = Pattern.compile("[^\\S ]");

// Test an input string.  (do for each input)
Matcher matcher = pattern.matcher(string);
boolean result = matcher.find();

result
随后将指示
string
是否包含除简单空格以外的任何空格。

我假设当您说“all'\r'\t'\n'…除空格以外”,您的意思是“U+0020以外的任何空格字符”(其中U+0020是简单空格)。这是否正确

如果是这样,那么以下正则表达式(通用形式)应该可以工作:

(?! )\s
这将匹配任何非简单空格的空白字符。此正则表达式使用


编辑:

正如@Bubletan在中所述,以下正则表达式也将起作用:

[^\S ]
这两个正则表达式都是等价的。这是因为
(?!)\s≣ "(不是字符U+0020)和(是空格)“
[^\S]≣ “不是(非空白或字符U+0020)
具有相同的真值表:

Let P(x) be the predicate "x is the character U+0020"
Let Q(x) be the predicate "x is whitespace"

P | Q | (¬P)∧Q | ¬(¬Q∨P)
–– ––– –––––––– ––––––––
T   T      F       F
T   F      T       T
F   T      F       F
F   F      F       F
虽然为了提高效率,您可能最好使用@Bubletan的解决方案(
[^\s]
)。环视通常比其他方法慢

这是您可以实现它的方式:

// Create the pattern.  (do only once)
Pattern pattern = Pattern.compile("[^\\S ]");

// Test an input string.  (do for each input)
Matcher matcher = pattern.matcher(string);
boolean result = matcher.find();

result
随后将指示
string
是否包含除简单空格以外的任何空格。

您可以使用
[^\S]
来匹配除
\S
(非空格)或
(空格)之外的所有内容


您可以使用
[^\S]
来匹配除
\S
(非空格)或
(空格)之外的所有内容


在Java中,使用
[^\\h]+
\h表示所有类型的水平空格。但在其他语言中,据我所知,它不可用。

在Java中,使用
[^\\h]+
\h表示所有类型的水平空格。但在其他语言中,据我所知,它不可用。

首先,删除空格,然后检查?为什么不检查
/\n |\r |\t/
?@antoni,因为我想找出由字符定义的所有空格。isWhitespace(char)除了空格本身。我认为除了\n |\r |\t之外,Character.isWhitespace(char)定义的转义字符必须更多whitespace@GregaMohorko:这也是一种方法,首先删除空格,然后检查?为什么不检查
/\n |\r |\t/
?@antoni,因为我想找出由Character.isWhitespace(char)定义的所有空格除了空格本身。我认为除了\n |\r |\t之外,Character.isWhitespace(char)定义的转义字符必须更多whitespace@GregaMohorko这是一个很详细的答案!谢谢!这是一个非常详细的答案!谢谢!