1

たとえば、この文字列からアポストロフィの間の値を抽出したい:package: name='com.app' versionCode='4' versionName='1.3'これは、Android アプリを開発するときに「aapt」が返すものです。com.app4、およびの値を取得する必要があります1.3。助けていただければ幸いです:)これを見つけましが、これはVBAです。

4

3 に答える 3

3

'この正規表現は、文字が値の囲み文字としてのみ発生すると仮定すると、すべてのケースで機能するはずです。

string input = "package: name='com.app' versionCode='4' versionName='1.3'";
string[] values = Regex.Matches(input, @"'(?<val>.*?)'")
                       .Cast<Match>()
                       .Select(match => match.Groups["val"].Value)
                       .ToArray();
于 2012-06-16T15:03:45.977 に答える
1
string strRegex = @"(?<==\')(.*?)(?=\')";
RegexOptions myRegexOptions = RegexOptions.None;
Regex myRegex = new Regex(strRegex, myRegexOptions);
string strTargetString = @"package: name='com.app' versionCode='4' versionName='1.3'";

foreach (Match myMatch in myRegex.Matches(strTargetString))
{
  if (myMatch.Success)
  {
    // Add your code here
  }
}

正規表現ヒーローのサンプルはこちら。

于 2012-06-16T15:11:33.557 に答える
1

興味がある場合は、リンク先の VBA の翻訳を次に示します。

public static void Test1()
{
    string sText = "this {is}  a {test}";
    Regex oRegExp = new Regex(@"{([^\}]+)", RegexOptions.IgnoreCase | RegexOptions.CultureInvariant);
    MatchCollection oMatches = oRegExp.Matches(sText);
    foreach (Match Text in oMatches)
    {
        Console.WriteLine(Text.Value.Substring(1));
    }
}

VB.NETでも:

Sub Test1()
    Dim sText = "this {is}  a {test}"
    Dim oRegExp = New Regex("{([^\}]+)", RegexOptions.IgnoreCase Or RegexOptions.CultureInvariant)
    Dim oMatches = oRegExp.Matches(sText)
    For Each Text As Match In oMatches
        Console.WriteLine(Mid(Text.Value, 2, Len(Text.Value)))
    Next
End Sub
于 2012-06-16T15:16:29.683 に答える