Java 如何使用正则表达式获取中间字符串?

Java 如何使用正则表达式获取中间字符串?,java,regex,Java,Regex,我有一个如下的输入字符串 数据日志设置文件:BTS50xx1EJA\3.20\log\u all.stp DatalogSetupFile:和\3.20\log\u all.stp是常量。我希望从字符串中提取BTS50xx1EJA。我该怎么做 您可以创建一个正则表达式组,在该组中,您可以指定哪些内容是静态内容,然后指定哪些内容是动态内容作为一个整体组,这样您就可以将动态内容作为一个整体组来获取 您可以如下定义正则表达式 ^(?:DatalogSetupFile:\s)(.*)(?:\3.20\l

我有一个如下的输入字符串

数据日志设置文件:BTS50xx1EJA\3.20\log\u all.stp


DatalogSetupFile:
\3.20\log\u all.stp
是常量。我希望从字符串中提取
BTS50xx1EJA
。我该怎么做

您可以创建一个正则表达式组,在该组中,您可以指定哪些内容是静态内容,然后指定哪些内容是动态内容作为一个整体组,这样您就可以将动态内容作为一个整体组来获取

您可以如下定义正则表达式

^(?:DatalogSetupFile:\s)(.*)(?:\3.20\log\u all.stp)$

试试这个

在这里,您可以使用第一个组来获取动态字符串

试试这个正则表达式:

\s\K[^\\]+
在Java中,它看起来像:

String myInputString = "DatalogSetupFile: BTS50xx1EJA\\3.20\\log_all.stp";
Pattern myPattern = Pattern.compile("\\s\\K[^\\\\]+");
Matcher myMatcher = Pattern.matcher(myInputString);
System.out.println(myMatcher.group(0));

?这不是一个代码/SQL/regex编写服务,您可以发布一个需求列表和选择的语言,然后一个代码猴子为您编写代码。我们非常乐意提供帮助,但我们希望您首先自己努力解决问题。一旦你这样做了,你可以解释你的问题,包括你工作的相关部分,并提出一个具体的问题,我们会尽力帮助你。祝你好运。或者
string.substring(18,string.length()-17)
看看这个@chrisz谢谢你,它能用!我试过了(?发布一个完整的答案,而不仅仅是一个指向非站点资源的链接。别误会我的意思:非站点链接是有用的和有价值的;但它们本身并不是答案。你几乎开始解释regex中的组的用法……但远远没有尝试。为什么字符串的最后部分需要一个非捕获组?答案应该是d是独立的,所有相关内容都在这里。链接只能用作附加参考资料。指向非现场答案的链接(参见此链接)此处不可接受。我使用了非捕获组正则表达式,因为他只需要特定字符串。您的末尾没有非捕获组!您的捕获组(可选)以冒号开头!
(?:)
verses
(:?)
。使用非捕获组没有什么意义;组外的内容(捕获或不捕获)不会被捕获。您的代码
.compile(“\s\K…”
中没有足够的反斜杠。