正则表达式用于查找具有随机中心的特定字符串

时间:2018-07-10 22:54:51

标签: java regex full-text-search

我将从大量文件中读取一个长字符串。我需要能够找到是否可以在每个String中找到特定类型的模式。在一些随机文本的前后都有一个特定的字符串。实质上;可能看起来像“ ABC [?????] DEF” ,问号是任何String(很可能不会超过50个字符,也不小于15个字符)。

我不能完全解决这个问题。我认为正则表达式是最好的方法,但是我不知道如何使用正则表达式。有人可以帮助我吗?

4 个答案:

答案 0 :(得分:1)

请注意,如果将ABC.{15,50}DEF之类的Java正则表达式应用于许多(!)大(!)文件,则效率较低。应用于ABCDEABCDEABCDEABCDEABCDE...的位置每第五个位置将回溯35次。

此问题的有效解决方案是:

不幸的是,大多数算法不能作为库使用。

答案 1 :(得分:0)

这项工作吗?

ABC[.*]DEF 或许 ABC.*DEF

您可以更加严格ABC.*{15,50}DEF

顺便问一下,您可以通过这个网站来帮助自己:https://regex101.com/

答案 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)

我在(regex take string at the center)中使用它:

stringPart1([^.]*)stringPart2

regex101