草庐IT

lambda表达式

全部标签

java正则表达式拆分字符串

我有点卡住了,试图想出正则表达式来分解具有以下属性的字符串:由|分隔(管道)字符如果单个值包含管道,则使用\(反斜杠)转义如果单个值以反斜杠结尾,则用反斜杠转义例如,这里有一些我想分解的字符串:One|Two|Three应该产生:["One","Two","Three"]One\|Two\|Three应该产生:["One|Two|Three"]One\\|Two\|Three应该产生:["One\","Two|Three"]现在我怎么能用一个正则表达式把它分开呢?更新:正如你们中的许多人所建议的,这不是正则表达式的良好应用。此外,正则表达式解决方案比仅遍历字符慢几个数量级。我最终遍历了

java - 用于检查在 Java 中不起作用的允许字符的正则表达式

我有以下方法来检查允许的字符:privatebooleancheckIfAllCharsAreValid(Stringtest){booleanvalid=false;if(test.matches("^[a-zA-Z0-9,.;:-_'\\s]+$")){valid=true;}returnvalid;}但如果测试中包含字符-,则匹配返回false。我必须转义-吗? 最佳答案 在[...]中,-符号被特殊处理。(您可以在表达式的开头为这个特殊目的自己使用它,其中有a-z。)你需要转义-字符[a-zA-Z0-9,.;:\-_'\s]

java - java 是否支持 if-then-else 正则表达式构造(Perl 构造)?

我在尝试编译以下正则表达式时收到PatternSyntaxException:"bd".matches("(a)?b(?(1)c|d)")这个正则表达式匹配bd和abc。它与bc不匹配。有什么想法吗?谢谢。好的,我需要编写正则表达式来匹配接下来的4个字符串:*datedate*datedate1*date2不应该匹配:*date*date1*date2**date1*date2date**...但这应该通过单个匹配来完成,而不是多个。请不要发布如下答案:(date*date)|(*date)|(date*)|(date) 最佳答案

Java 的正则表达式不将其他语言的字符识别为单词字符(即\w)

假设我有一个词:“Aiavärav”。表达式\w+应该捕获这个词,但是字母“ä”将这个词减半。我得到的不是“Aiavärav”,而是“Aia”。包含那些非ascii字母的单词的正确正则表达式是什么? 最佳答案 根据thedocumentation,\w仅匹配[a-zA-Z_0-9]除非您指定UNICODE_CHARACTER_CLASS标志:Pattern.compile("\\w+",Pattern.UNICODE_CHARACTER_CLASS)或者在模式中嵌入一个(?U):Pattern.compile("(?U)\\w+")

java - Rgb、Rgba、Hsl、Hsla 颜色编码的正则表达式模式

我正在为这种字符串寻找一些正则表达式rgb(r,g,b)rgba(r,g,b,a)hsl(h,s%,l%)hsla(h,s%,l%,a)与:r,g,bintegerincludedbetween0and255,afloatbetween0and1(truncatedtofirstdigitafterthepoint)hintegerincludedbetween0and359s,lintegerincludedbetween0and100对于rgb,我写了那些正则表达式:rgb\(\s*((?:[0-2]?[0-9])?[0-9])\s*,\s*((?:[0-2]?[0-9])?[0-

java - 将阿拉伯文本与正则表达式匹配

我尝试使用正则表达式仅匹配阿拉伯语文本,但出现异常。这是我的代码:txt.matches("\\P{Arabic}+")异常(exception)情况:线程“main”中的异常java.util.regex.PatternSyntaxException:索引9附近的未知字符属性名称{Arabic}\P{阿拉伯语}+ 最佳答案 使用这个字符block\p{InArabic}+在javaUnicode脚本中,block、类别和二进制属性是用\p和\P(否定效果)编写的Scripts使用前缀Is或使用script关键字(supported

Java 正则表达式字边界

您好,我有以下代码,用于查找“is”一词,但当它位于另一个字符串中时则无法查找,因此“this”一词不应返回匹配项,因此我使用\b。但是下面的代码没有找到匹配项,我不明白为什么?publicstaticvoidmain(String[]args){Stringa="Thisislandisbeautiful.";Patternp=Pattern.compile("\bis\b");Matcherm=p.matcher(a);while(m.find()){System.out.println(a.substring(m.start(),m.end()));}}

java - for 循环的 "count limit"表达式是只计算一次,还是在每次迭代时计算?

如果我在循环的条件语句中调用一个方法,它会在每次循环迭代时被调用吗?例如:for(inti=0;i我会在每次迭代中执行expensiveComputation()吗?或者expensiveComputation()的结果是否会在循环变量初始化的同时存储并在每次迭代中使用?我应该改写成这样吗:intmax=expensiveComputation();for(inti=0;i 最佳答案 它将在每次迭代时被调用,除非编译器/优化器决定它没有副作用并且可以作为优化消除调用。我的意思是,编译器不能只是盲目地存储值,因为java中的函数与数学

Java正则表达式 - 获取字符串的特定部分

我正在尝试访问遵循某种模式的多个字符串的特定部分。这是我正在尝试做的一个例子。Strings="HellomynameisJoe";if(Pattern.matches(s,"Hellomynameis([\\w]*)")){System.out.println("Nameentered:$1");}但是,我的代码从未进入“if-statement” 最佳答案 将参数交换到matches方法,您的if将起作用(正则表达式是第一个参数,而不是第二个)。但是,您仍然不会使用$1打印第一个捕获组。为此:Strings="Hellomyna

java - 用于验证文件名的正则表达式

我需要在这样的方法中验证a。validateFileName(Editables){Stringfiltered_str=s.toString();if(filtered_str.matches(".*[regexp].*")){filtered_str=filtered_str.replaceAll("[regxp]","");s.clear();s.append(filtered_str);}我应该使用哪个正则表达式来排除所有非法字符和空格?我正在使用Linux 最佳答案 如果您使用的是符合POSIX标准的操作系统,则文件名中的