2017-01-19 1 views
0

私の質問が基本的に聞こえる場合は、ご容赦ください。私は4つの値を持つテキスト文字列があります:|フィールドのB |フィールドC |正規表現で空のインスタンスを取得する

フィールドAフィールドDを

入力1つまたは複数のこれらの4つの値の多くを得ることが空白のままにすることができますが、例えば:

フィールドA ||フィールドC |フィールドD

または

フィールドA ||フィールドC ||

値を適切に取得して特定のバケットに割り当てる正規表現を作成する必要があります。誰かが助けてくれますか?

答えて

1

使用する言語によっては、若干異なる場合があります。

以下の実装はjavascriptに基づいています。これが最初の|パイプが見えるまで、非貪欲捕獲を意味します - 基本的にあなたが後にしているパターンは、これが意味することは、あなたが.すべてをキャプチャし*?を指定することで、しているということです/(.*?)\|(.*?)\|(.*?)\|(.*)/

のようなものです。

4つのグループがあり、最後のグループには|パイプがないことがわかっているので、(.*)は、文字列のその他すべてを意味するので、最後のセットには十分です。

はこれを試してみてください:

const regex = /(.*?)\|(.*?)\|(.*?)\|(.*)/gm; 
 
const str = `Field A||Field C|Field D`; 
 
var m; 
 

 
while ((m = regex.exec(str)) !== null) { 
 
    // This is necessary to avoid infinite loops with zero-width matches 
 
    if (m.index === regex.lastIndex) { 
 
     regex.lastIndex++; 
 
    } 
 
    
 
    // The result can be accessed through the `m`-variable. 
 
    m.forEach((match, groupIndex) => { 
 
     console.log(`Found match, group ${groupIndex}: ${match}`); 
 
    }); 
 
}

+0

こんにちはサミュエル・トー、おかげでトン!このソリューションは、魅力のように機能します。私はJavascript Regex – rvg

+0

@rvgを心配していませんでした。あなたもこれに答えてマークすることができます感謝します。ソリューションのほかに、左側のティック –

関連する問題