我有一个 FileInputStream,它读取一个文件,该文件在某处包含一个字符串子集,如下所示:
...
OperatorSpecific(XXX)
{
Customer(someContent)
SaveImage()
{
...
我想识别字符串的 Customer(someContent)
部分,并将括号内的 someContent 切换为其他内容。
someContent 将是一个动态参数,并将包含一个可能包含 5-10 个字符的字符串。
我以前使用过 regEx,比如一两次,但我觉得在这样的上下文中,我不知道括号内的值是什么,我不知道应该如何表达它。 ..
总之,我希望返回一个字符串,其中在 Customer 括号内包含我的 someContent 值。
有人对如何完成这项工作有什么好主意吗?
最佳答案
试试这个(在 java 中使用双转义反斜杠!)
(?<=Customer\()[^\)]*
并替换为您的内容。
(?<=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/