Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.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/jquery-ui/2.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将波兰语字母视为普通\w?_Java_Regex - Fatal编程技术网

正则表达式:如何使java将波兰语字母视为普通\w?

正则表达式:如何使java将波兰语字母视为普通\w?,java,regex,Java,Regex,Java将波兰语字母视为而不是\w。 现在我不知道如何编写正则表达式来完成以下所有单元测试 如何更改语言之前的和语言之后的以完成测试: import java.util.regex.Matcher; import java.util.regex.Pattern; import org.junit.Test; import junit.framework.TestCase; public class tmpTest extends TestCase{ final String BE

Java将波兰语字母视为
而不是
\w
。 现在我不知道如何编写正则表达式来完成以下所有单元测试

如何更改
语言之前的
语言之后的
以完成测试:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.junit.Test;

import junit.framework.TestCase;

public class tmpTest extends TestCase{

    final String BEFORE_LANGUAGE = "(?<![\\w\\p{S}])";
    final String AFTER_LANGUAGE = "\\d*((?![\\w\\p{S}])|(<))";


    @Test
    public void test1() {
        // Given:
        String language = ".net";
        String text = "xxxxxxx xxx .net";
        String regex = BEFORE_LANGUAGE + Pattern.quote(language) + AFTER_LANGUAGE;

        // When: 
        Matcher m = Pattern.compile(regex).matcher(text);

        // Then:
        assertTrue(m.find());
    }

    @Test
    public void test2() {
        // Given:
        String language = ".net";
        String text = "xxxxxxx xxx .net<br>";
        String regex = BEFORE_LANGUAGE + Pattern.quote(language) + AFTER_LANGUAGE;

        // When: 
        Matcher m = Pattern.compile(regex).matcher(text);

        // Then:
        assertTrue(m.find());
    }

    @Test
    public void test3() {
        // Given:
        String language = "c++";
        String text = "xxxxxxx xxx c++";
        String regex = BEFORE_LANGUAGE + Pattern.quote(language) + AFTER_LANGUAGE;

        // When: 
        Matcher m = Pattern.compile(regex).matcher(text);

        // Then:
        assertTrue(m.find());
    }

    @Test
    public void test4() {
        // Given:
        String language = "c";
        String text = "xxxxxxx xxx c++";
        String regex = BEFORE_LANGUAGE + Pattern.quote(language) + AFTER_LANGUAGE;

        // When: 
        Matcher m = Pattern.compile(regex).matcher(text);

        // Then:
        assertFalse(m.find());
    }

    @Test
    public void test5() {
        // Given:
        String language = "r";
        String text = "xxxxxxx xxx różne";
        String regex = BEFORE_LANGUAGE + Pattern.quote(language) + AFTER_LANGUAGE;

        // When: 
        Matcher m = Pattern.compile(regex).matcher(text);

        // Then:
        assertFalse(m.find());
    }

    @Test
    public void test6() {
        // Given:
        String language = "r";
        String text = "xxxxxxx xxx r";
        String regex = BEFORE_LANGUAGE + Pattern.quote(language) + AFTER_LANGUAGE;

        // When: 
        Matcher m = Pattern.compile(regex).matcher(text);

        // Then:
        assertTrue(m.find());
    }

}
import java.util.regex.Matcher;
导入java.util.regex.Pattern;
导入org.junit.Test;
导入junit.framework.TestCase;
公共类tmpTest扩展了TestCase{
_LANGUAGE=“(?”)之前的最后一个字符串;
字符串正则表达式=前\u语言+模式。引号(语言)+后\u语言;
//当:
Matcher m=Pattern.compile(regex).Matcher(text);
//然后:
assertTrue(m.find());
}
@试验
公共无效测试3(){
//鉴于:
String language=“c++”;
String text=“xxxxxxx xxx c++”;
字符串正则表达式=前\u语言+模式。引号(语言)+后\u语言;
//当:
Matcher m=Pattern.compile(regex).Matcher(text);
//然后:
assertTrue(m.find());
}
@试验
公共无效测试4(){
//鉴于:
String language=“c”;
String text=“xxxxxxx xxx c++”;
字符串正则表达式=前\u语言+模式。引号(语言)+后\u语言;
//当:
Matcher m=Pattern.compile(regex).Matcher(text);
//然后:
assertFalse(m.find());
}
@试验
公共无效测试5(){
//鉴于:
String language=“r”;
String text=“xxxxxxx xxx rżne”;
字符串正则表达式=前\u语言+模式。引号(语言)+后\u语言;
//当:
Matcher m=Pattern.compile(regex).Matcher(text);
//然后:
assertFalse(m.find());
}
@试验
公共无效测试6(){
//鉴于:
String language=“r”;
String text=“xxxxxxx xxx r”;
字符串正则表达式=前\u语言+模式。引号(语言)+后\u语言;
//当:
Matcher m=Pattern.compile(regex).Matcher(text);
//然后:
assertTrue(m.find());
}
}

根据,
\p{IsAlphabetic}
匹配Unicode中被视为字母的任何内容

\w
还包括
0-9
,因此您还需要将
\d
放在字符类中

所以


要使
\w
和其他支持Unicode的速记字符类将
模式。Unicode\u character\u CLASS
标志传递给编译的模式:

Pattern.compile(regex, Pattern.UNICODE_CHARACTER_CLASS).matcher(text);

无需重写当前模式。

\p{IsAlphabetic}
可能吗?是的,
语言=“\\d*(?![\\p{IsAlphabetic}\\p{S}])后的最终字符串。
\p{Alnum}
包括所有Unicode字符和十进制数字,如
\w
模式。编译(regex,pattern.Unicode\u字符类)。匹配器(文本);
无需重写模式。
(?U)\w
匹配所有Unicode字母和数字以及更多字符。
Pattern.compile(regex, Pattern.UNICODE_CHARACTER_CLASS).matcher(text);