2017-04-11 2 views
0

私は以下の情報を持っています:正規表現 - 丸い角かっこのテキストを無視してテキストを置き換えます

a)です。この形式の文字列[name(label)] bla [name2(label2)] bla [name3(bla3)]

b)。ストリングスnamename2

私は別の文字列(*言う)で[name(label)][name2(label2)]を(何が括弧の間とすることができる)を交換する必要があり、その結果は* bla * bla [name3(bla3)]

入力

[name(label)] bla [name2(label2)] bla [name3(bla3)]にする必要があります

nameおよびname2

出力

* bla * bla [name3(bla3)]

私はJavaで正規表現を使用していることをどのように行うことができますか?

+2

入力と出力の例 – ZiTAL

+0

万一 'NAME'と'ラベル'最後に同じ数字があるのか​​、それとも単なる例だったのでしょうか? –

+0

Java言語。 'name'と' label'は最後に同じ番号を持つ必要はありません。 – Paul

答えて

1

この正規表現を試してみてください:

\[(name|name2)(\(.*?\))?\] 

と、ご希望のものを言う*

Regex Demo

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);

+0

作品! '[name]'と '[name2]'(丸括弧なし)をその文字 '*'に置き換えることができますか? – Paul

+0

@Paulは答えを –

+0

に更新しました。正規表現に行う必要のある小さな修正があります:最後の '\\'を削除 - あなたの投稿を編集できませんでした。 – Paul

2

正規表現:"\ [?NAME2 \([^ \)] + \)\]"

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

私は答えを編集しました – ZiTAL

+1

良い、ありがとう。 ['String.join'](http://stackoverflow.com/a/26195047/6419007)を再実装したことに注意してください。 –

+1

@EricDuminil java 1.7のString.joinはありません。 – ZiTAL

関連する問題