jjzjj

Java - 解析字符串 - String.split() 与 Pattern 和 Matcher

给定一个包含表示专有名词和类别/描述对的逗号分隔列表的字符串,使用String.split()与Pattern&Matcher方法查找特定专有名词并提取相关类别的优缺点是什么/描述对?haystack字符串格式不会改变。它将始终包含以下形式的逗号分隔数据PROPER_NOUN|类别/描述两种方法的共同变量:Stringhaystack="EARTH|PLANET/COMFORTABLE,MARS|PLANET/HARDTOBREATHE,PLUTO|DWARF_PLANET/FARAWAY";Stringneedle="PLUTO";Stringresult=null;使用String

java 比较两个 Pattern 对象

有没有一种简单的方法来比较两个Pattern对象?我有一个Pattern,它使用正则表达式"//"编译以检查代码中的注释。由于有几种正则表达式来描述评论,我想找到一种方法来区分它们。如何实现?Pattern类没有实现equals方法。 最佳答案 您可以通过比较调用pattern()或toString的结果来比较Pattern对象,但这并不能满足您的要求(如果我正确理解你的问题)。具体来说,这会比较传递给Pattern.compile(...)工厂方法的字符串。但是,这没有考虑单独传递给模式字符串的标志。没有简单的方法可以测试两个不同

java 正则表达式 : find pattern of 1 or more numbers followed by a single

我遇到了Java正则表达式问题。如何找到1个或多个数字后跟单个.在一个字符串中? 最佳答案 "^[\\d]+[\\.]$"^=startofstring[\\d]=anydigit+=1ormoreocurrences\\.=escapeddotchar$=endofstring 关于java正则表达式:findpatternof1ormorenumbersfollowedbyasingle,我们在StackOverflow上找到一个类似的问题: https:

java - Splitter 在简单的 Pattern 上爆炸

我刚开始用Guava代替GoogleCollection。Splitter类看起来很酷。但是当我使用它时,就像这样:privatestaticfinalPatternp=Pattern.compile("+");privatestaticfinalSplitterusSplitter=Splitter.on(p).trimResults();我得到一个堆栈转储:java.lang.NoSuchMethodError:com.google.common.base.Platform.precomputeCharMatcher(Lcom/google/common/base/CharMatc

java - "\n"是垂直空格吗,即 "\v"应该匹配它吗?

从逻辑上讲,它是(但只要字符编码或语言环境在起作用,逻辑就无关紧要)。根据perl-e'print"\n"=~/\v/?"y\n":"n\n";'打印“y”,它是。根据Pattern.compile("\\v").matcher("\n").matches();在java中返回false,它不是。如果没有thisposting,这根本不会让我感到困惑。声称Sun’supdatedPatternclassforJDK7hasamarvelousnewflag,UNICODE_CHARACTER_CLASS,whichmakeseverythingworkrightagain.但我使用的是

为 glob 或类似 Ant 的模式 "*foo/**/*.txt"返回 List<File> 的 Java 库?

我正在寻找一个库,它会提供一种方法,该方法会给我一个匹配给定类Ant模式的文件列表。对于*foo/**/*.txt我会得到foo/x.txtfoo/bar/baz/.txtmyfoo/baz/boo/bar.txt等我知道这可以通过DirWalker和PathMatchermat=FileSystems.getDefault().getPathMatcher("glob:"+filesPattern);,但我更喜欢一些维护的库。我希望CommonsIO拥有它,但没有。更新:我很高兴重用Ant的代码,但更喜欢比整个Ant更小的东西。 最佳答案

java - Pattern.split 比 String.split 慢

有两种方法:privatestaticvoidnormalSplit(Stringbase){base.split("\\.");}privatestaticfinalPatternp=Pattern.compile("\\.");privatestaticvoidpatternSplit(Stringbase){//usethestaticfieldabovep.split(base);}然后我在main方法中像这样测试它们:publicstaticvoidmain(String[]args)throwsException{longstart=System.currentTimeMi

java - 在没有 anchor 的 Java 中不区分大小写的字符串匹配

注意:这不是有关不区分大小写匹配的问题。这是一个关于regexanchor的问题。我在用Java进行不区分大小写的基本匹配时遇到了很多麻烦:importjava.util.regex.Matcher;importjava.util.regex.Pattern;publicclassmatch{publicstaticvoidmain(String[]args){Stringprompt="das101.lo1>";Stringstr="automate@DAS101.LO1>";Patternignore=Pattern.compile(prompt.toUpperCase(),Pat

java - 为什么代理 java 正则表达式会找到连字符 -

我试图找出为什么JAVA([\ud800-\udbff\udc00-\udfff])中的这个正则表达式用于replaceAll(regexp,"")还删除连字符减号以及代理字符。这个的Unicode是\u002d所以它似乎不在任何这些范围内。我可以很容易地删除此行为,添加&&[^\u002d]导致([\ud800-\udbff\udc00-\udfff&&[^\u002d]])但是,由于我不知道为什么这个\u002d被删除,我认为可能有更多未被注意的字符被删除。例子:Stringtext="A\u002dB";System.out.println(text);Stringregex="

java - pattern() 与 Pattern 类中的 toString()

Pattern类中的pattern()方法和toString()方法有什么区别?文档说:publicStringpattern()Returnstheregularexpressionfromwhichthispatternwascompiled.publicStringtoString()Returnsthestringrepresentationofthispattern.Thisistheregularexpressionfromwhichthispatternwascompiled.即使他们的实现也返回相同的结果:importjava.util.regex.*;classTes