我有以下信息:
A)。这种格式的字符串[name(label)] bla [name2(label2)] bla [name3(bla3)]
B)。字符串name
和name2
我需要将[name(label)]
和[name2(label2)]
(任何可以在圆括号之间)替换为另一个字符串(比如*
),因此结果必须为* bla * bla [name3(bla3)]
< / p>
输入
[name(label)] bla [name2(label2)] bla [name3(bla3)]
name
和name2
输出
* bla * bla [name3(bla3)]
如何在Java中使用正则表达式?
答案 0 :(得分:2)
正则表达式:&#34; \ [name2?\([^ \]] + \)\]&#34;
import java.util.regex.*;
public class ValidateDemo
{
public static void main(String[] args)
{
String[] inputA = new String[] {"name", "name2"};
String tmp = "";
for (int i = 0; i < inputA.length; i++)
{
if(i>0)
tmp+="|";
tmp+=inputA[i];
}
tmp = "("+tmp+")";
/*
System.out.println(tmp);
System.exit(0);
*/
String regex = "\\["+tmp+"\\([^\\)]+\\)\\]";
String input = "[name(label)] bla [name2(label2)] bla [name3(bla3)]\n";
String output = input.replaceAll(regex,"*");
System.out.println(output);
}
}
答案 1 :(得分:1)
试试这个正则表达式:
\[(name|name2)(\(.*?\))?\]
并用你想要的东西代替*
Java示例:
String regex = "\\[(name|name2)(\\(.*?\\)\\)?]";
String string = "[name(label)] bla [name2(label2)] bla [name3(bla3)]\n";
String result = string.replaceAll(regex,"*");
System.out.println(result);
Javascript示例:
const regex = /\[(name|name2)(\(.*?\))?\]/gm;
const str = `[name(label)] bla [name2(label2)] bla [name3(bla3)] [name] [name2]`;
const subst = `*`;
const result = str.replace(regex, subst);
console.log(result);
&#13;