我将从大量文件中读取一个长字符串。我需要能够找到是否可以在每个String中找到特定类型的模式。在一些随机文本的前后都有一个特定的字符串。实质上;可能看起来像“ ABC [?????] DEF” ,问号是任何String(很可能不会超过50个字符,也不小于15个字符)。
我不能完全解决这个问题。我认为正则表达式是最好的方法,但是我不知道如何使用正则表达式。有人可以帮助我吗?
答案 0 :(得分:1)
请注意,如果将ABC.{15,50}DEF
之类的Java正则表达式应用于许多(!)大(!)文件,则效率较低。应用于ABCDEABCDEABCDEABCDEABCDE...
的位置每第五个位置将回溯35次。
此问题的有效解决方案是:
不幸的是,大多数算法不能作为库使用。
答案 1 :(得分:0)
答案 2 :(得分:0)
尝试
String pattern = "ABC.{15,50}DEF";
我认为这可行。
我生成了一些随机测试用例,您可以尝试
System.out.println("ABCes564fd5644cv81e6a7ser*oiier&%iuwdjDEF".matches(pattern));
System.out.println("ABC.{15,50.dsjfklejkfsk;dlfk;e546544}DEF".matches(pattern));
System.out.println("ABC.{15,50}*)(/;:DEF".matches(pattern)); //14 chars between
System.out.println("ABC.{15,50}*)(/;:%DEF".matches(pattern)); //15 chars between
答案 3 :(得分:0)