末尾が (&任意の文字) の場合、文字列内のすべての一致を返す正規表現の開発を手伝ってください。文字列 a="abcd(&w)" の場合、一致する値は (&w) である必要があります。 a="abcd(&w), xhz(&d) の場合、2 つの一致があるはずです。任意の区切りリスト [','':',';'........]
abcd(&w)pqrsr の場合、xhz(&d)。次に、区切り文字の前で終了していないため、一致は (&d) のみであり、(&w) ではありません。
末尾が (&任意の文字) の場合、文字列内のすべての一致を返す正規表現の開発を手伝ってください。文字列 a="abcd(&w)" の場合、一致する値は (&w) である必要があります。 a="abcd(&w), xhz(&d) の場合、2 つの一致があるはずです。任意の区切りリスト [','':',';'........]
abcd(&w)pqrsr の場合、xhz(&d)。次に、区切り文字の前で終了していないため、一致は (&d) のみであり、(&w) ではありません。
正規表現を作成するだけです。たとえば、次のようにabcd(&w)
なります。これ.*[w]$
は、それを証明するRegex 101です。この のように複数の文字が必要な場合abcd(&w), xhz(&d)
、正規表現は になります.*[wd]$
。
ただし、正規表現を構築するには、入力として取得した文字列を解析する必要があります。たとえば、次のようにします。
var regex = "abcd(&w)".Replace("(&", "[").Replace(")", "]");
または2つの場合、次のようなことをするかもしれません:
var input = "abcd(&w), xhz(&d)";
var exps = input.Split(',', StringSplitOptions.RemoveEmptyEntries);
var startChars = new List<string>();
var endChars = new List<string>();
foreach (var ex in exps)
{
if (ex.Substring(ex.Length - 3, 1) == "&")
{
startChars.Add(ex.Substring(0, ex.IndexOf("(")));
endChars.Add(ex.Substring(ex.IndexOf("&") + 1, 1));
}
}
var regex = string.Format("{0}[{1}]$",
string.Join("|", startChars.ToArray()),
string.Join("", endChars.ToArray()));
それはこのような正規表現を構築しabcd|xhz[wd]$
ます。