ここから本文です

正規表現【javascript】でこれをやりたいのですが、、 >●●( >●●( >●●( >●●...

tam********さん

2019/5/404:47:18

正規表現【javascript】でこれをやりたいのですが、、
>●●(
>●●(
>●●(
>●●(
>●●(
>●●(

●●のみ抽出したい。
改行数は可変します。

どうすればよいでしょうか?

閲覧数:
42
回答数:
3
お礼:
500枚

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

leg********さん

2019/5/423:48:36

サンプルを試作してみました。

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>JavaScript 2つの指定文字間の文字列を抜き出す</title>
</head>
<body>
<h3>JavaScript 2つの指定文字間の文字列を抜き出す</h3>

<h4>原稿(テキストエリアのデータ)</h4>

<textarea id="textdata" cols="40" rows="8">
</textarea>


<h4>結果(抽出データ)</h4>
<ul id="ans"></ul>

<script>
//-----------------------------------------
//2つの指定文字間の文字列を抜き出す処理
// 回答者のコード
//-----------------------------------------

//半角閉じ山括弧と開始丸括弧で囲まれた文字を抽出する
onload = function(){

var ans = document.querySelector('#ans');
var textdata = document.querySelector('#textdata');
var str;

var arr = []; //結果格納用の配列変数

textdata.value=`111>あい(12345abc
222>うえお(67890def
333>かき(12345ghi
444>くけこ(45678jkl
555>AB(90123mno
666>CDE(45678pqr`;

str = textdata.value;
console.log(str);

//丸括弧は 全角と半角に対応
str.replace(/>(.*)[(|(]/g, function(){ arr.push(arguments[1]) });

// check
console.log(arr);

// output
for (var i in arr){
var li = document.createElement("li");
li.textContent = arr[i];
ans.appendChild(li);
}

};
</script>
</body>
</html>

ブラウザ ChromeとEdgeにて動作確認済みです。
どうぞ、おためしになってみてください。

この回答は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜2件/2件中

並び替え:回答日時の
新しい順
|古い順

プロフィール画像

カテゴリマスター

ama********さん

2019/5/500:29:44

let line = [">(",">いろはにほへと(",">(>ちりぬるを( >わかよたれそ(",">>つねならむ(("];
for( let i = 0; i<line.length; i++){
console.log("i: "+ i );
let m = line[i].match(/\>[^\>]+?(?=()/g);
//↑line[i] 配列の引数はゼロ・スタートです
if( m!==null ){
let mr = new Array();
for( let j = 0; j<m.length; j++){
let mw = m[j].match(/[^\>(]+/);
//↑m[j] 配列の引数はゼロ・スタートです
if( mw!==null ) {
mr.push(mw[0]);
console.log( mr[mr.length-1] );
}
}
}
console.log( );
}

【コンソール出力】

i: 0

i: 1
いろはにほへと

i: 2
ちりぬるを
わかよたれそ

i: 3
つねならむ

プロフィール画像

カテゴリマスター

ois********さん

2019/5/409:50:37

その文字列のカッコ「 ( 」が、
質問に記載してある通り「全角」のカッコであれば、

「改行」または「開始文字」のあとに続く、という意味の、

────────────────
(?<=(\r?\n|\r|^)\>)
────────────────

0 文字以上の任意文字を表す

────────────────
.*
────────────────

全角のカッコ「( 」に続く、という意味の

────────────────
(?=()
────────────────

を組み合わせて、

────────────────
(?<=(\r?\n|\r|^)\>).*(?=()
────────────────

でマッチングできる。
カッコ「 ( 」が半角の場合は、

────────────────
(?<=(\r?\n|\r|^)\>).*(?=\()
────────────────

でマッチング。

────────────────
var str = ( function(){
/*
>あいう(
>ABC(
>12345(
>(
>12ABあい(
>>(
*/
} ).toString().split( /\/\*|\*\// )[ 1 ].trim();

var match = str.match( /(?<=(\r?\n|\r|^)\>).*(?=\()/g );
console.log( match ); // 結果

--------------------------------
【結果】

▼ Array(6)
0: "あいう"
1: "ABC"
2: "12345"
3: ""
4: "12ABあい"
5: ">"
length: 6
────────────────

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる