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

Regex for finding specific strings with random center

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

我不能让它正常工作。我认为正则表达式是最好的方法,但我不知道如何使用正则表达式。谁能帮帮我?

这行得通吗:

ABC[.*]DEF 或者可能 ABC.*DEF

你可以更严格一些ABC.*{15,50}DEF

顺便说一句,你可以通过这个网站来帮助自己:https://regex101.com/

尝试

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

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

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

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

我从 (regex take string at the center) 使用这个:

stringPart1([^.]*)stringPart2

regex101