二重引用符で囲まれた単語のみを抽出したい。したがって、コンテンツが次の場合:
「あなた」は、あなたの「質問」に対する回答を電子メールで受け取りたいですか?
答えは
- あなた
- 質問
これを試してくださいregex
:
\"[^\"]*\"
また
\".*?\"
説明 :
[^ character_group ]
否定: character_group にない任意の 1 文字に一致します。
*?
前の要素に 0 回以上一致しますが、できるだけ少ない回数一致します。
およびサンプルコード:
foreach(Match match in Regex.Matches(inputString, "\"([^\"]*)\""))
Console.WriteLine(match.ToString());
//or in LINQ
var result = from Match match in Regex.Matches(line, "\"([^\"]*)\"")
select match.ToString();
@Ria の回答に基づく:
static void Main(string[] args)
{
string str = "Would \"you\" like to have responses to your \"questions\" sent to you via email?";
var reg = new Regex("\".*?\"");
var matches = reg.Matches(str);
foreach (var item in matches)
{
Console.WriteLine(item.ToString());
}
}
出力は次のとおりです。
"you"
"questions"
不要な場合は、string.TrimStart() と string.TrimEnd() を使用して二重引用符を削除できます。
私は正規表現ソリューションが好きです。あなたもこのようなことを考えることができます
string str = "Would \"you\" like to have responses to your \"questions\" sent to you via email?";
var stringArray = str.Split('"');
次にodd
、配列から要素を取得します。linqを使用する場合は、次のように実行できます。
var stringArray = str.Split('"').Where((item, index) => index % 2 != 0);
これも @Ria から正規表現を盗みますが、それらを配列に取得してから引用符を削除することができます。
strText = "Would \"you\" like to have responses to your \"questions\" sent to you via email?";
MatchCollection mc = Regex.Matches(strText, "\"([^\"]*)\"");
for (int z=0; z < mc.Count; z++)
{
Response.Write(mc[z].ToString().Replace("\"", ""));
}
Regex と Trim を組み合わせます。
const string searchString = "This is a \"search text\" and \"another text\" and not \"this text";
var collection = Regex.Matches(searchString, "\\\"(.*?)\\\"");
foreach (var item in collection)
{
Console.WriteLine(item.ToString().Trim('"'));
}
結果:
search text
another text