Tag: 正则表达式

在Java中搜索子字符串的最快方法是什么?

我想了解在Java中进行子字符串搜索时可能出现的性能问题。 我知道在Java中搜索子字符串的两种内置方法。 1. String.indexOf() 据我所知,这种方法使用子串搜索的powershell算法,因此其复杂度为O(nm),其中n和m是字符串和模式的长度。 2.使用模式和匹配器 我对正则表达式算法的实现方式及其复杂性一无所知。 所以问题是: 1)从性能的角度来看,哪种方法更受欢迎? 2)正则表达式搜索的复杂性是什么? 它取决于正则表达式本身吗?

替换引号内的空格

我真的在这里与正则表达式斗争。 使用Java我将如何用另一个字符(或转义空格”\ ” )替换引号内的所有空格(实际上是双引号),但仅限于短语以通配符结尾。 word1 AND “word2 word3 word4*” OR “word5 word6” OR word7 至 word1 AND “word2\ word3\ word4*” OR “word5 word6” OR word7

java中的正则表达式:在abcdef中查找所有_overlapping_ variants(ab)|(bc)|(de)|(f)

如果我在java中运行此正则表达式,我将收到{ab,de,f},但我想收到{ab,bc,de,f}。 我认为bc无法收到,因为bc与ab有重叠的字母。 如何更改默认行为?

Java模式/匹配器

这是一个示例文本: \1f\1e\1d\020028 。 我无法修改输入文本,我正在从文件中读取长串文本。 我想提取以下内容: \1f , \1e , \1d , \02 为此,我写了以下正则表达式模式: “\\[a-fA-F0-9]” 我正在使用Pattern和Matcher类,但我的匹配器无法使用提到的正则表达式找到模式。 我已经使用一些在线正则表达式网站上的文本测试了这个正则表达式,并且令人惊讶的是它在那里工作。 我哪里错了? 原始代码: public static void main(String[] args) { String inputText = “\1f\1e\1d\02002868BF03030000000000000000S023\1f\1e\1d\03\0d”; inputText = inputText.replace(“\\”, “\\\\”); String regex = “\\\\[a-fA-F0-9]{2}”; Pattern p = Pattern.compile(regex); Matcher m = p.matcher(inputText); while (m.find()) { System.out.println(m.group()); } } 输出 :没有打印

如何使用RegExp替换除双引号之外的所有标点符号

我正在尝试做一些字符串清理。 我想从字符串中删除除双引号之外的所有标点符号。 下面的trimPunctuation()函数可以很好地从字符串中删除所有标点符号。 有没有人知道删除所有标点符号但双引号的方法。 private String trimPunctuation( String string, boolean onlyOnce ) { if ( onlyOnce ) { string = string.replaceAll( “\\p{Punct}$”, “” ); string = string.replaceAll( “^\\p{Punct}”, “” ); } else { string = string.replaceAll( “\\p{Punct}+$”, “” ); string = string.replaceAll( “^\\p{Punct}+”, “” ); } return string.trim(); } 有关标点符号unicode类的更多信息,请点击此处 。 但是,这对我没有帮助。

匹配正则表达式时程序永远运行

我不知道为什么,但是当我尝试运行这个程序时,看起来该程序将永远运行。 package fjr.test; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Test3 { public static void main(String[] args){ String regex = “dssdfsdfdsf wdasdads dadlkn mdsds .”; Pattern p = Pattern.compile(“^([a-zA-Z]+ *)+$”); Matcher match = p.matcher(regex); if(match.matches()){ System.out.println(“Yess”); }else{ System.out.println(“No.. “); } System.out.println(“FINISH…”); } } 我需要做的是匹配包含一串只用空格分隔的单词的模式

Java正则表达式电话号码

我提供以下正则表达式:^((?:\ + 27 | 27)| 0)(\ d {9})$表示南非的数量,并希望仅对以+27或27开头的数字返回true或者0.例如; +27832227765,27838776654或0612323434。 我尝试使用: regexplanet.com 和正则表达式测试 但无论我输入什么(即使是简单的正则表达式),两者都会返回false。 谁知道我做错了什么?

什么是正则表达式,用于查找“”之间的字符串

我有一个字符串如下: “HTTP:172.1。” =(10,1,3); “HTTP:192.168。” =(15,2,6); “http:192.168.1.100”=(1,2,8); “”里面的字符串是Tag,而inside()是前面标记的值。 什么是将返回我的正则表达式:Tag:http:172.1。 价值:10,1,3

英国邮政编码的正则表达式

我正在制作一个应用程序,要求用户输入邮政编码,如果有效则输出邮政编码。 我找到了以下模式,它可以正常工作: String pattern = “^([A-PR-UWYZ](([0-9](([0-9]|[A-HJKSTUW])?)?)|([A-HK-Y][0-9]([0-9]|[ABEHMNPRVWXY])?)) [0-9][ABD-HJLNP-UW-Z]{2})”; 我对正则表达式知之甚少,如果有人能通过这个声明与我说话,那就太棒了。 我主要是不明白的? 和()使用。

H2没有识别regexp_like

我编写了一个在Oracle数据库上运行的查询,该数据库使用函数REGEXP_LIKE来过滤查询中的某些行。 具体的函数调用是 regexp_like(col1, ‘[^[:alpha:]]’) 问题是当我在H2上运行查询时出现以下错误: org.h2.jdbc.JdbcSQLException: Function “REGEXP_LIKE” not found 如果我使用SQLDeveloper工具直接在Oracle数据库上运行查询,它将按预期返回。 可能导致这种情况的任何想法?