1

@[Alphanumeric1](Alphanumeric2:Alphanumeric3)長い文字列から次の形式を解析する必要があります。以下は私の文字列です:

This is a long text 
@[Alphanumeric1](Alphanumeric2:Alphanumeric3) again long text 
@[Alphanumeric11](Alphanumeric22:Alphanumeric33) again long text
@[Alphanumeric111](Alphanumeric222:Alphanumeric333) 

()のすべての出現を@[Alphanumeric1](Alphanumeric2:Alphanumeric3)コロン(:)の後に来る値に置き換える必要があります。つまり、次のように出力する必要があります。

This is a long text 
Alphanumeric3 again long text 
Alphanumeric33 again long text
Alphanumeric333 
4

3 に答える 3

2

@\[[\w\d]*\]\([\w\d]*:([\w\d]*)\)

これは上記の3つの文字列と一致し:、グループ1の後に英数字の文字列を取得します。ここで正規表現を試してください

于 2012-07-27T14:41:37.793 に答える
0

次の正規表現は、その入力を処理できるようにする必要があります。

(@\[[a-zA-Z0-9]+\]\([a-zA-Z0-9]+:(?<match>[a-zA-Z0-9]+)\))

C#で使用される場合、以下は文字列内のすべてのインスタンスを検索して置換しますinput

string output = Regex.Replace(input, @"(@\[[a-zA-Z0-9]+\]\([a-zA-Z0-9]+:(?<match>[a-zA-Z0-9]+)\))", "${match}");

正規表現の説明:

(                           # beginning of group to find+replace
    @                       # match the '@'
    \[                      # match the '['
        [a-zA-Z0-9]+        # alpha-numeric match
    \]                      # match the ']'
    \(                      # match the '('
        [a-zA-Z0-9]+        # alpha-numeric match
        :                   # match the ':'
        (?<match>           # beginning of group to use for replacement
            [a-zA-Z0-9]+    # alpha-numeric match
        )
    \)                      # match the ')'
)
于 2012-07-27T14:44:46.260 に答える
0

これでうまくいくはずです:

class Program
{
    static void Main(string[] args)
    {
        string data = @"This is a long text 
@[Alphanumeric1](Alphanumeric2:Alphanumeric3) again long text 
@[Alphanumeric11](Alphanumeric22:Alphanumeric33) again long text
@[Alphanumeric111](Alphanumeric222:Alphanumeric333)";

        Debug.WriteLine(ReplaceData(data));
    }

    private static string ReplaceData(string data)
    {
        return Regex.Replace(data, @"@\[.+?\]\(.*?:(.*?)\)", match => match.Groups[1].ToString());
    }
}
于 2012-07-27T14:45:57.797 に答える