草庐IT

java - 要使用字符串进行正则表达式还是不使用字符串进行正则表达式?

我已经开始在我的java程序中使用.match(Regex)方法,但现在我只使用字符串(StringregexString=newString("[^a-zA-Z0-9][^a-zA-Z0-9]*");这是我目前所拥有的,例如)。但是我知道我可以使用实际的正则表达式(Regexpattern=newRegex()&thePatternclass然后编译它(?)某种方式)。在Java中将Regex用作类而不仅仅是字符串是否有优势?我非常习惯bash脚本,正则表达式在最宽松的意义上只是“字符串”,没有能力/不需要单独的类,所以我很难看到这里有一个。 最佳答案

java - Java 和 Ruby 之间的正则表达式差异

我正在尝试为以下内容编写一个正则表达式:以双引号字符开头和结尾的字符字符串,不包含控制字符,反斜杠用于转义下一个字符。Pascal中注释的双星形式:以(*开头并以*)结尾但不包含*)的字符串我正在尝试用Ruby编写一个版本,然后用Java编写另一个版本,但我无法找到两者在正则表达式中的差异。感谢您的帮助! 最佳答案 Here是一个很好的起点:specificsforJava(通常主要使用正则表达式)specificsforRuby(通常主要使用正则表达式)flavorcomparison(主要是正则表达式语法和功能)主要注意,在Ru

java - 从单词中删除开头的标点符号

我在这里看到了一些与我在这里提出的问题相符的话题。但没有一个是具体的。如果我有一个像"NewDelhi"这样的字符串,我希望我的代码提取NewDelhi。所以这里的引号被去掉了。我想去掉任何标点符号,一般在开头和结尾。到目前为止,这有助于去除末尾的标点符号:StringreplacedString=replaceable_string.replaceAll("\\p{Punct}*([a-z]+)\\p{Punct}*","$1");我在这里做错了什么?我的输出是"NewDelhi,开头的引号仍然存在。 最佳答案 以下内容将从Str

java - 正则表达式在 Velocity 模板中不起作用

我在Test.java中试过了Stringregex="";Stringtest1="";System.out.println(test.replaceAll(regex,""));`但是当我在速度模板中尝试同样的事情时`#set($brRegex="")#set($imageDescription=$imageDescription.replaceAll($brRegex,""))`和:#set($imageDescription=$imageDescription.replaceAll("",""))`两者都不行。我错过了什么吗? 最佳答案

java - intellij IDEA中如何打开或调用regexTester插件

我对IntellijIDEA(社区版)插件比较陌生。我刚刚安装了this用于在Intellij中测试和验证正则表达式的插件,但我无法从任何地方调用插件窗口。我尝试转到设置>插件,但没有成功。有人知道在intelliJ上使用这个插件吗? 最佳答案 您始终可以尝试Ctrl+Shift+A并键入RegexTester或只是Regex。如果分配了一个快捷方式,它还会向您显示一个快捷方式。 关于java-intellijIDEA中如何打开或调用regexTester插件,我们在StackOverf

java - 哪个是用于数字和字符串的正确正则表达式?

我正在尝试创建简单的IDE并基于以下内容为我的JTextPane着色字符串("")注释(//和/**/)关键字(public、int...)数字(整数如69和float如1.5)我为源代码着色的方式是覆盖StyledDocument中的insertString和removeString方法。经过多次测试,我已经完成了评论和关键字。Q1:至于我的字符串着色,我根据这个正则表达式为我的字符串着色:Patternstrings=Pattern.compile("\"[^\"]*\"");MatchermatcherS=strings.matcher(text);while(matcherS.

Java 相当于 Perl 的 s///运算符?

我有一些代码要从Perl转换为Java。它大量使用正则表达式,包括s///运算符。我已经使用Perl很长时间了,并且仍然习惯于Java做事的方式。特别是,字符串似乎更难处理。有谁知道或拥有完全实现s///的Java函数?这样它就可以处理这样的事情,例如:$newString=~s/(\bi'?\b)/\U$1/g;(也许不是一个很好的例子,但你明白了。)谢谢。 最佳答案 没有那么整洁,但在Java中你会使用String.replaceAll()或使用Pattern做类似的事情:Patternp=Pattern.compile("(\

java - 如何使用正则表达式递归匹配模式?

字符串可以是以下之一:a(b,c)a(a(b,c),d)a(a(a(a(a(b,c),d),a(e,f)),g),h)etc我想匹配无限数量的“a(x,y)”。我怎样才能使用Regex做到这一点?这是我拥有的:\\w\\(((?:\\([a-zA-Z0-9]+\\))|(?:[a-zA-Z0-9]+)),((?:\\([a-zA-Z0-9]+\\))|(?:[a-zA-Z0-9]+))\\)它只匹配“a(x,y)”的两个递归。 最佳答案 Java的标准正则表达式库不支持递归,所以你不能用它匹配这种通用的嵌套结构。但在支持递归的风格中

java - 用于在 Java 中检查带下划线的字符串名称的正则表达式

我不熟悉java中的正则表达式。如何检查文件名是否具有以下格式update_9_0_27?是不是类似于[0-9][\\_][0-9][\\_][0-100]? 最佳答案 以下应该有效:^[a-zA-Z]+_\d_\d_\d{1,2}$^和$是字符串anchor的开头,因此您不会只匹配字符串的一部分。每个\d都会匹配一个数字,最后一个\d之后的{1,2}表示“匹配一个和两个数字”(含)”。如果文件名的update部分始终不变,那么您应该使用以下内容:^update_\d_\d_\d{1,2}$请注意,在Java字符串中创建此正则表达式

java - Scala REPL 中的 Unicode 正则表达式

我想检测Unicode字母(\p{L})的单词。对于以下语句,Scala的REPL返回false,而在Java中它是true(这是正确的行为):java.util.regex.Pattern.compile("\\p{L}").matcher("ä").matches()Java和Scala都在JRE1.7中运行:System.getProperty("java.version")返回"1.7.0_60-ea"这可能是什么原因? 最佳答案 可能是解释器中使用了不兼容的字符编码。例如,这是我的输出:scala>System.getPr