java - 在动态字符串中形成正确的正则表达式

标签 java regex

我有一个 FileInputStream,它读取一个文件,该文件在某处包含一个字符串子集,如下所示:

...
    OperatorSpecific(XXX)
    {
       Customer(someContent)
       SaveImage()
       {
...

我想识别字符串的 Customer(someContent) 部分,并将括号内的 someContent 切换为其他内容。

someContent 将是一个动态参数,并将包含一个可能包含 5-10 个字符的字符串。

我以前使用过 regEx,比如一两次,但我觉得在这样的上下文中,我不知道括号内的值是什么,我不知道应该如何表达它。 ..

总之,我希望返回一个字符串,其中在 Customer 括号内包含我的 someContent 值。

有人对如何完成这项工作有什么好主意吗?

最佳答案

试试这个(在 java 中使用双转义反斜杠!)

(?<=Customer\()[^\)]*

并替换为您的内容。

查看here at Regexr

(?<=Customer\()是看后面的断言。它在每个位置检查左侧是否有“Customer(”),如果是,则在右侧匹配所有不是“)”且带有 [^\)]* 的字符。 ,这就是将被替换的部分。

一些有效的java代码

Pattern p = Pattern.compile("(?<=Customer\\()[^\\)]*");
String original = "Customer(someContent)";
String Replacement = "NewContent";

Matcher m = p.matcher(original);
String result = m.replaceAll(Replacement);

System.out.println(result);

这将打印

Customer(NewContent)

关于java - 在动态字符串中形成正确的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8270401/

相关文章:

php 正则表达式可选择匹配整个单词

java - 将 String 类型解析为 Java 中可用的其他数字类型的最佳方法是什么?

java - 使用线程池时出现错误 FutureTask@2c7b84de 被拒绝

java - 回复 : jdbc driver for MySQL cannot be found from WEB-INF/lib directory

Java Regex - 如何替换以以下开头和结尾的模式

regex - REGEX_EXTRACT_ALL不起作用,为什么?

java - Hibernate 和 Java 泛型 - 无法使用 MappedSuperClass 创建 session 工厂

java - 好的http。无法保存加载的数据

Java 正则表达式 - 恰好有一个空格的表达式

如果数字没有连字符,则javascript正则表达式删除引号