2016-05-15 18 views
1

結果に見られるように、タグの間にコンテンツを配置するための正規表現がいくつかあります。私は結果のテキストに同じ正規表現式を適用する場合、私は...タグ内タグの間で一致しない一致

オリジナルコンテンツのタグを取得します:

Loremのイプサム123456嘆きAMET、 consecteturのadipiscingのELIT例@twitter座ります。

RESULT:

Loremのイプサム[/ TW] AMET @twitter [TEL] 123456 [/ TEL]悲しみのSIT [TW]、consectetur adipiscing ELIT [A]実施例[/]。

RESULT SECOND TIME:

Loremのイプサム[TEL] [TEL] 123456 [/ TEL] [/ TEL]悲しみ 座る@twitter [TW] [TW] [/ TW] [/ tw] amet、consipetur adipiscing elit [a] [a]例[/ a] [/ a]。

コンテンツが[]と[/]の間にあると一致しないように正規表現に入れることはできますか?

+0

てみ '追加する(?!\ [\/[^]] *])'あなたの正規表現パターンの終わりまで。 –

+0

下記の解決策は解決策ではなく、解決策です。 –

答えて

0

説明

(?:[0-9]+|twitter|consectetur)(?![0-9a-z]*\[\/[a-z]+\]) 

と交換してください:[xx]$0[/XX]

Regular expression visualization

この正規表現は、次の操作を行います:

  • 、単語twitterを数字のすべての文字列を見つけ、および単語consectetur。正規表現を説明するためにこれらの部分文字列を選択しましたが、他の文字列で置き換えることができます。
  • ワードが既に終了タグによって
  • 避けるエッジケースに従っていないことを
    • 構築[0-9+]は、ソース文字列であるが、それは既にタグ
    • マッチングによって包まれてもよい2345に一致する検証主要@無しtwitterは依然として後続タグを有する

ライブデモ

https://regex101.com/r/lW2pY6/1

サンプルテキスト

123456 Loremのイプサム@twitter [TEL] 123456 [/ TEL]悲しみのSIT [TW] [/ TW ] amet、consipetur adipiscing elit [a]

交換後

サンプル

[XX] 123456 [/ XX] Loremのイプサム[TEL] 123456 [/ TEL]悲しみのSIT [TW] @twitter [/ TW] AMET、[XX] consectetur [/ XX ] adipiscing ELIT [A]例[/ A]

説明

NODE      EXPLANATION 
---------------------------------------------------------------------- 
    (?:      group, but do not capture: 
---------------------------------------------------------------------- 
    [0-9]+     any character of: '0' to '9' (1 or more 
          times (matching the most amount 
          possible)) 
---------------------------------------------------------------------- 
    |      OR 
---------------------------------------------------------------------- 
    twitter     'twitter' 
---------------------------------------------------------------------- 
    |      OR 
---------------------------------------------------------------------- 
    consectetur    'consectetur' 
---------------------------------------------------------------------- 
)      end of grouping 
---------------------------------------------------------------------- 
    (?!      look ahead to see if there is not: 
---------------------------------------------------------------------- 
    [0-9a-z]*    any character of: '0' to '9', 'a' to 'z' 
          (0 or more times (matching the most 
          amount possible)) 
---------------------------------------------------------------------- 
    \[      '[' 
---------------------------------------------------------------------- 
    \/      '/' 
---------------------------------------------------------------------- 
    [a-z]+     any character of: 'a' to 'z' (1 or more 
          times (matching the most amount 
          possible)) 
---------------------------------------------------------------------- 
    \]      ']' 
---------------------------------------------------------------------- 
)      end of look-ahead 
関連する問題