相关疑难解决方法(0)

Java正则表达式支持Unicode?

要匹配A到Z,我们将使用正则表达式:

[A-ZA-Z]

如何让正则表达式匹配用户输入的utf8字符?例如中文单词,如环保部

java regex unicode cjk

69
推荐指数
3
解决办法
6万
查看次数

如何在Java中浏览Java字符串文字?

我正在使用Java处理一些Java源代码.我正在提取字符串文字并将它们提供给一个带字符串的函数.问题是我需要将未转义的String版本传递给函数(即这意味着转换\n为换行符,转换为\\单行\等).

Java API中是否有一个函数可以执行此操作?如果没有,我可以从某个库获得这样的功能吗?显然,Java编译器必须进行此转换.

如果有人想知道,我试图在反编译的混淆Java文件中取消混淆字符串文字.

java string escaping

68
推荐指数
9
解决办法
12万
查看次数

使用Java regexp匹配(例如)Unicode字母

StackOverflow上有许多问题和答案,假设"字母"可以在正则表达式中匹配[a-zA-Z].然而,对于Unicode,还有更多的字符,大多数人会认为是一个字母(所有希腊字母,Cyrllic ..还有更多.Unicode定义了许多块,每个可能有"字母".

Java定义 为像alpha字符这样的东西定义了Posix类,但是它被指定为仅使用US-ASCII.预定义的字符类定义要包含的单词[a-zA-Z_0-9],这也排除了许多字母.

那么如何正确匹配Unicode字符串呢?是否有其他图书馆可以做到这一点?

java regex unicode character-class character-properties

14
推荐指数
2
解决办法
2万
查看次数

使用正则表达式时\ b如何工作?

如果我有一个句子并希望在特定单词之前匹配之后显示一个单词或所有单词,例如我想显示单词fox后面brown The quick brown fox jumps over the lazy dog,我知道我可以看起来正面看后面(?<=brown\s)(\w+)但是我不喜欢我完全理解在实例中使用\ b (?<=\bbrown\s)(\w+).我使用http://gskinner.com/RegExr/作为我的测试人员.

regex

14
推荐指数
2
解决办法
1万
查看次数

Java正则表达式匹配

当字符串以数字开头,然后是一个点,然后是一个空格和一个或多个大写字符时,我需要匹配.匹配必须出现在字符串的开头.我有以下字符串.

1. PTYU fmmflksfkslfsm
Run Code Online (Sandbox Code Playgroud)

我试过的正则表达式是:

^\d+[.]\s{1}[A-Z]+
Run Code Online (Sandbox Code Playgroud)

它不匹配.对于这个问题,正则表达式是什么?

java regex

11
推荐指数
1
解决办法
3万
查看次数

在字符串中搜索单词

如果我在字符串中寻找特定的单词,例如,在字符串"你好吗"我正在寻找"是".常规indexOf()工作得更快更好还是正则表达式匹配()

String testStr = "how are you";
String lookUp = "are";

//METHOD1
if (testStr.indexOf(lookUp) != -1)
{
 System.out.println("Found!");
}

//OR
//METHOD 2
if (testStr.match(".*"+lookUp+".*"))
{
 System.out.println("Found!");
}
Run Code Online (Sandbox Code Playgroud)

上面两种方法中的哪一种是在另一个字符串中查找字符串的更好方法?还是有更好的选择?

  • Ivard

java regex string

10
推荐指数
1
解决办法
4万
查看次数

"\n"是一个垂直的空格,即"\ v"应该匹配吗?

从逻辑上讲,它是(但无论何时角色编码或区域设置正在运行,逻辑都无关紧要).根据

perl -e 'print "\n" =~ /\v/ ? "y\n" : "n\n";'
Run Code Online (Sandbox Code Playgroud)

打印"y",它是.根据

Pattern.compile("\\v").matcher("\n").matches();
Run Code Online (Sandbox Code Playgroud)

false在java中返回,它不是.如果没有这个帖子声称,这根本不会让我感到困惑

Sun为JDK7更新的Pattern类有一个奇妙的新标志UNICODE_CHARACTER_CLASS,它使一切正常工作.

但我使用的是java版本"1.7.0_07"并且该标志存在并且似乎根本没有任何改变.此外,"\n"是不是初来乍到的Unicode而是一个普通的老ASCII字符,所以我实在看不出这种差异可能是如何发生的.可能我做的事情很愚蠢,但我看不到.

java regex unicode perl

8
推荐指数
2
解决办法
1万
查看次数

更好的正则表达式语法思想

我需要一些帮助才能完成关于正则表达式的想法.

介绍

关于SE上正则表达式的更好语法有一个问题,但我认为我不会使用流畅的语法.这对新手来说肯定不错,但是如果是复杂的正则表达式,你会用一整页稍微好一点的胡言乱语来代替一行乱码.我喜欢Martin Fowler方法,其中正则表达式由较小的部分组成.他的解决方案是可读的,但手工制作; 他提出了一种聪明的方法来构建复杂的正则表达式而不是支持它的类.

我正试图用类似的东西来上课(首先看他的例子)

final MyPattern pattern = MyPattern.builder()
.caseInsensitive()
.define("numberOfPoints", "\\d+")
.define("numberOfNights", "\\d+")
.define("hotelName", ".*")
.define(' ', "\\s+")
.build("score `numberOfPoints` for `numberOfNights` nights? at `hotelName`");

MyMatcher m = pattern.matcher("Score 400 FOR 2 nights at Minas Tirith Airport");
System.out.println(m.group("numberOfPoints")); // prints 400
Run Code Online (Sandbox Code Playgroud)

其中fluent语法用于组合扩展的regex,如下所示:

  • 定义命名模式并通过封闭反引号来使用它们
    • `name` 创建一个命名组
      • 助记符:shell捕获反引号中包含的命令的结果
    • `:name` 创建一个非捕获组
      • 助记符:类似于(?:......)
    • `-name` 创建一个反向引用
      • 助记符:短划线将其连接到上一个匹配项
  • 除非引用,否则重新定义个别角色并在任何地方使用它
    • 这里只允许一些字符(例如~ @#%")"
      • 重新定义+(将是非常混乱,所以这是不允许的
      • 在上面的例子中,重新定义空间意味着任何间距是非常自然的
      • 重新定义一个角色可以使图案更紧凑,除非过度使用,这是好的
      • 例如,使用类似define('#', …

java regex fluent

7
推荐指数
1
解决办法
744
查看次数

包含unicode单词的正则表达式

我想匹配包含某个单词的所有字符串.喜欢:

String regex = (?:\P{L}|\W|^)(???)(?:\b|$)
Run Code Online (Sandbox Code Playgroud)

但是,Pattern类不会编译它:

java.util.regex.PatternSyntaxException: Unmatched closing ')' near index 39
(?:\P{L}|\W|^)((?:??|??|??)(?:?)|?)|?)?)(?:\b|$)
Run Code Online (Sandbox Code Playgroud)

我已经设置了unicode_case来编译param,不知道这里出了什么问题

final Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE| Pattern.CANON_EQ);
Run Code Online (Sandbox Code Playgroud)

感谢帮助!:)

java regex unicode character-properties

7
推荐指数
1
解决办法
1142
查看次数

正则表达式验证至少有四个字符的全名

我想使用正则表达式来验证名称。名称必须包含名字、中间名、姓氏(不一定全部)。但我还想强加一个条件,即名称必须至少包含四个字符。我发现 regex 在这里验证全名Java Regex to Validate Full Name ...并找到了 regex 来检查字符串中至少三个字符(字母)的检查 在这里Regex 检查至少 3 个字符。但我不确定如何将这两者结合起来以获得所需的结果。请帮助我实现所需的正则表达式,以便我可以完成我的项目。

regex validation google-forms

5
推荐指数
2
解决办法
2万
查看次数