1

入力文字列内のカスタム文字のペアを一致させるための適切な正規表現を見つけようとしています。これらのカスタム文字は、対応する html タグに置き換えられます。

たとえば、入力文字列には、単語を太字で示すためにアンダースコアをペアで含めることができます。したがって、 次のように_Name_出力されます<b>Name</b>

ただし、文字列に真のアンダースコアがある場合は、「ボールド」タグに置き換えることができないため、無視する必要があります。本物のアンダースコアの前には/(もっと良い文字が見つかりませんでした。もう 1 つアンダースコアやハイフンなどを使用できます)。この本物のアンダースコアの 1 つまたはペアの出現は、正規表現で無視する必要があります。

これまでのところ、この正規表現を思いつくことができました:

var pattern = @"(?!/)_(.*?)(?!/)_";

ただし、以下の入力文字列では失敗します。

_Tom_Katy/_Richard/_/_Stephan_and many users

として出力します

<b>Tom</b>Katy/<b>Richard/_/</b>Stephan_and many users

前もって感謝します、広報

4

1 に答える 1

1

これを試して

@"(?<!/)_([^/]+?)[^/]_"

/検索に含めたい場合は、/この方法を試してください。

@"(?<!\/)_(.+?)((?<!\/)_)"

説明:

(?<!/)      # this is a negative lookbehind, it says "I don't want the previous char to be /
_           # finds the first _
([^/]+?)   # tells to search characters without / (in this case your names)
[^/]_"      # finds the last _ not preceded by / (maybe redundant seen the previous one)
于 2012-09-17T14:52:08.353 に答える