アプリ版:「スタンプのみでお礼する」機能のリリースについて

以下の文字列を表す正規表現を教えてください><

;以外の任意の文字列 activate "任意の文字列"任意の文字列

つまり
; arealk activate "algkre" a;relak;lekr
arelakjlka activate arekjlk" alkrelak
はダメで、
arkejalrkjl activate "arejkal" aekjaljra;
はOKです。

ちなみに言語はC#です。

A 回答 (2件)

ああ、activateの前は空でもいいのですね。


んじゃこうで
ところで#1のパターンでも、#1の補足にあるNGのパターンはNGになりません?

using System;
using System.Text.RegularExpressions;

class X
{
public static void Main(string[] args)
{
string[] s = {
"; arealk activate \"algkre\" a;relak;lekr", // must be NG
"arelakjlka activate arekjlk\" alkrelak", // must be NG
"arkejalrkjl activate \"arejkal\" aekjaljra;", // must be OK
"arewa;are activate \"arrare\" area", // must be NG
"activate \"alekrlk\" arewpo" // must be OK

};

// string pat = "^[^;]+ ?activate ?\".+?\".*";
string pat = "^[^;]*activate ?\".+?\".*";

foreach (string item in s) {
Console.WriteLine("Try: " + item);

if (Regex.IsMatch (item, pat))
Console.WriteLine("--> match");
else
Console.WriteLine("--> no match");
}
}
}

Try: ; arealk activate "algkre" a;relak;lekr
--> no match
Try: arelakjlka activate arekjlk" alkrelak
--> no match
Try: arkejalrkjl activate "arejkal" aekjaljra;
--> match
Try: arewa;are activate "arrare" area
--> no match
Try: activate "alekrlk" arewpo
--> match



#1のもこれも、""で囲まれた文字列の後がなにもなくてもOKと見なしています。
なにかないとNGにしたいのなら、

"^[^;]*activate ?\".+?\".+"

(最後の*を+に変更)
で。

すみませんが、これでまだ何かあっても
次の反応は夜遅くになりますのでよろしく。
    • good
    • 0

条件に不明確なところがあるんだけど、とりあえず


示されているパターンでは条件を満足します。

using System;
using System.Text.RegularExpressions;

class X
{
public static void Main(string[] args)
{
string[] s = {
"; arealk activate \"algkre\" a;relak;lekr",
"arelakjlka activate arekjlk\" alkrelak",
"arkejalrkjl activate \"arejkal\" aekjaljra;"
};

string pat = "^[^;]+ ?activate ?\".+?\".*";

foreach (string item in s) {
Console.WriteLine("Try: " + item);

if (Regex.IsMatch (item, pat))
Console.WriteLine("--> match");
else
Console.WriteLine("--> no match");
}
}
}

Try: ; arealk activate "algkre" a;relak;lekr
--> no match
Try: arelakjlka activate arekjlk" alkrelak
--> no match
Try: arkejalrkjl activate "arejkal" aekjaljra;
--> match

この回答への補足

さっそくのご回答ありがとうございます!

ただ、説明不足だったようで、もう少し追加させていただきます。

ダメな例
arewa;are activate "arrare" area

OKな例
activate "alekrlk" arewpo

補足日時:2007/05/24 16:56
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!