【Java – split(regex,limit)方法实际上如何工作?】教程文章相关的互联网学习教程文章

java – Regex String.split()【代码】

我正在使用java来拆分表单的String:String stringToSplit = "AAA BBB CCC DDD EEE FFF GGG HHH III JJJ KKK";我正在使用String[] tokens = stringToParse.split("\\s");沿着空格分割字符串,给出:tokens = {"AAA","BBB","CCC", "DDD","EEE","FFF","GGG","HHH","III", "JJJ", "KKK"} 我现在需要做的是在大多数情况下沿着空白分割,但在特定情况下也要保持一些字符串.例如,我希望“CCC DDD”和“III JJJ KKK”在我拆分时保持完整的字...

用于在HTML中查找URL的RegEx在Java / Android中需要25秒【代码】

在Android / Java中,给定网站的HTML源代码,我想提取所有XML和CSV文件路径. 我正在做什么(使用RegEx)是这样的:final HashSet<String> urls = new HashSet<String>(); final Pattern urlRegex = Pattern.compile("[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|].(xml|csv)"); final Matcher url = urlRegex.matcher(htmlString); while (url.find()) {urls.add(makeAbsoluteURL(url.group(0))); }public String makeAbsolute...

我想在Java中使用String.replaceAll(regex,regex)而不是(regex,String)【代码】

例:input = "10N10N"; input = input.replaceAll("1|N", "N|1"); // syntax not correct预期产量:N01N01 我要问的是单行迭代器将所有“1”替换为“N”而所有“N”替换为“1”.解决方法:由于Java 9 Matcher类包含replaceAll?(Function<MatchResult,String> replacer),您可以根据当前匹配动态指定应该用作替换的内容.所以你的代码可能如下所示:Map<String, String> replacementsMap = Map.ofEntries(Map.entry("1", "N"),Map.entr...

Java Pattern验证注释和util Regex模式表现不同【代码】

我有一个正则表达式^(?=[a-zA-Z0-9,!@#$&*()_'+-=<>.?{}\\[\\]|; :\\s]*$)(?!.*[/])我通过两种方法为字符串“hello”尝试了正则表达式: > java.util.regex.Pattern:将通过测试> javax.validation.constraints.Pattern(annotation):会抛出一个无效值存在的错误. 有谁知道为什么这两个表现不同?解决方法:至少对于你给出的测试字符串“hello”,似乎两个正则表达式的行为相同,所以很难知道你遇到了什么,没有进一步的信息. 这个简短...

java – Android,String.split(String regex)不会拆分所有字符串【代码】

我有String.split(String regex)的问题.我想将我的字符串分成4个字符的部分.String stringa = "1111110000000000" String [] result = stringa.split("(?<=\\G....)")当我打印结果我期望1111,1100,0000,0000但结果是1111,110000000000.我怎么解决?谢谢.解决方法:这里a solution without regex – 从字符串结束开始,提取4个或更少的字符并将它们添加到List:public static void main (String[] args) {String stringa = "1111111...

java – 如何在我的J2ME项目中添加REGEX匹配?

这个问题几乎总结了一下.只想在J2ME中对字符串运行正则表达式匹配.解决方法:JRegex不能在CLDC设备上运行.试试这个:code.google.com/p/regexp-me/.

Jakarta Regexp和Java 6 java.util.regex之间的差异【代码】

我正在从Jakarta Regexp迁移到标准的Java 6正则表达式包java.util.regex.当没有在regexp中指定开头^和end $时,我注意到以下区别:当regexp匹配部分字符串时,Jakarta Regexp返回true,而Java 6 java.util.regex包不返回:String regexp = "\\d"; String value = "abc1abc";Pattern pattern = Pattern.compile(regexp); Matcher matcher = pattern.matcher(value); result = matcher.matches(); // returns false返回false而:RE re =...

Java Regex性能:不情愿的量词或字符类?【代码】

哪一种更有效,或者(如果等效)哪一种更好?我试图匹配一对括号内的所有内容.Pattern p1 = Pattern.compile("\\([^)]*\\)"); Pattern p2 = Pattern.compile("\\(.*?\\)");对我来说,第二个读取更好,但使用可能令人困惑的不情愿的量词,我不确定是否会导致性能损失. 编辑 不要错过表明这更好的答案:Pattern p3 = Pattern.compile("\\([^)]*+\\)");解决方法:与非贪婪的方式p2相比,这个方法具有更好的性能,这将导致回溯.Pattern p1 = Pat...

Java regex regionEnd【代码】

我正在尝试编写一个在字符串开头找到时间的正则表达式.我想删除字符串的那一部分,所以我使用了regioEnd函数,但它将regioend设置为行的结尾.Pattern pattern = Pattern.compile("\\d+.\\d+"); String line = "4:12testline to test the matcher!"; System.out.println(line); Matcher matcher = pattern.matcher(line); int index = matcher.regionEnd(); System.out.println(line.substring(index));我在这做错了什么?解决方法: S...

java – 使用Regex从句子中用[a-zA-Z]查找单词【代码】

我试图用正则表达式得到句子中的所有单词,但只用[a-zA-Z]得到的单词.因此,对于“我是男孩”,我想要{“我”,“我”,“一个”,“男孩”}但是对于“我a1m a b * y”,我想要{“I”,“a”}因为“a1m”和“b * y”包括[a-zA-Z]以外的字符. 所以对我来说,我正试图检查 >如果它在字符串的开头,那么我只检查是否有空格>否则这个词之前和之后都有一个空格>如果它是最后一个单词,那么检查单词前面是否有空格. 所以我在Java中得到了类似的东西:...

java – REGEX百分比2小数和负值【代码】

这是我的正则表达式检查百分比,2位小数到100^-?(100([.]0{1,2})?)$|(^\d{1,2}([.]\d{1,2})?)但仅在99.16工作,而不是像-99.16 如何允许减去百分比?解决方法:你刚刚错过了^ – ?在第二个选项中^-?(100([.]0{1,2})?)$|(^-?\d{1,2}([.]\d{1,2})?)

Java – split(regex,limit)方法实际上如何工作?【代码】

参见英文答案 > Java – String split() Method, zero and negative limit 3个我试图理解拆分方法是如何工作的,并对它有轻微的困惑.在oracle的文档页面中给出的这个例子中,String str = "boo:and:foo";String[] str1 = str.split("o",2);Outputbo:and:foo这很容易理解,字符串在第一个’o’的出现时实际上是分开的 但对于String[] str1 = str.split("o",3);Output: b:and:foo 这是怎么出来的?...

RE validation in Java EE(java.util.regex.Pattern)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75import java.util.regex.Pattern;<br> /** * 校验器:利用正则表达式校验邮箱、手机号等 * */<br><br> public class Validator { <br>/** * 正则表达式:验证用户名 */ ??//public static final Stri...

Java Regex:基于除撇号之外的非单词字符进行拆分【代码】

我试图基于空格和非单词字符进行拆分和包含,除了撇号. 我已经能够将它拆分并包含空格和非单词字符,但我似乎无法弄清楚如何从非单词字符中排除撇号. 这是我目前的Regex ……str.split("\\s|(?=\\W)");…在此代码示例上运行时:program p; beginwrite('x'); end.…产生这个结果:program p ; beginwrite ( 'x <!-- This is the problem. ' ) ; end .这几乎是正确的,但我的目标是跳过撇号,这是结果:program p ; beginwrite ( 'x' ...

java – 通过regex替换StringBuilder中的文本【代码】

我想替换StringBuilder中的一些文本.这该怎么做? 在这段代码中,我得到了与matcher.find()一致的java.lang.StringIndexOutOfBoundsException:StringBuilder sb = new StringBuilder(input); Pattern pattern = Pattern.compile(str_pattern); Matcher matcher = pattern.matcher(sb); while (matcher.find())sb.replace(matcher.start(), matcher.end(), "x"); 解决方法:让我们有一个总长度为50的StringBuilder,你可以将前20个变为...