none
microsoft .net正規表現構文の記法について RRS feed

  • 質問

  • 特定の文字より前の部分を抽出したいのですが、microsoft .net正規表現構文の場合はどのように記述すれば良いのでしょうか。

    例えば、「abc\def」のような文字列の場合「abc」を抽出したいと考えています。

    ご教授お願い致します。

    2016年3月9日 9:09

回答

  • こんにちは。

    カテゴリがSharePointになってますが、正しいでしょうか。
    .netの正規表現は以下にリファレンスがありますので参考になさってください。

    https://msdn.microsoft.com/ja-jp/library/az24scfc(v=vs.110).aspx

    • 回答の候補に設定 佐伯玲 2016年3月14日 0:53
    • 回答としてマーク 佐伯玲 2016年3月30日 4:35
    2016年3月9日 9:14
    モデレータ
  • 正規表現 "(.*)(?=/)" はいかがですか?('/'を任意の文字に置き換えます)

    using System.Text.RegularExpressions;
    
    string str = "abc/def";
    MatchCollection matchlist = Regex.Matches(str, @"(.*)(?=/)");
    foreach (Match item in matchlist)
    {
        Console.WriteLine(item.Value);
    }


    • 編集済み kenjinoteMVP 2016年3月9日 9:32
    • 回答の候補に設定 佐伯玲 2016年3月14日 0:53
    • 回答としてマーク 佐伯玲 2016年3月30日 4:35
    2016年3月9日 9:30
  • 自分的には以下の記事が分かりやすいと思いますので紹介しておきます。「ASP.NET の」とタイトルが付いていますが、「ASP.NET での検証」のセクションを除けば、ASP.NET に限らず .NET Framework 共通に使えます。

    ASP.NET の正規表現
    https://msdn.microsoft.com/ja-jp/library/ms972966.aspx

    > 例えば、「abc\def」のような文字列の場合「abc」を抽出したいと考えています。

    その正規表現パターンの具体例は、もっと詳しく想定される入力文字列と抽出条件を書いていただけないと提案不可能です。("\" の前なのか "\def" の前なのか? "abc" は特定の文字に限るのか否か? ・・・などなど)

    • 回答の候補に設定 佐伯玲 2016年3月14日 7:20
    • 回答としてマーク 佐伯玲 2016年3月30日 4:35
    2016年3月14日 1:48
  • 例えば、「abc\def」のような文字列の場合「abc」を抽出したいと考えています。

    正規表現に拘らず、この目的が達成できれば良いのであれば、一つの例ですが以下のように分割して最初の一つを取り出すことができます。

    string test = @"abc\def";
    string s = test.Split('\\')[0];

    ★良い回答には回答済みマークを付けよう! MVP - .NET  http://d.hatena.ne.jp/trapemiya/

    • 回答としてマーク 佐伯玲 2016年3月30日 4:35
    2016年3月15日 2:31

すべての返信

  • こんにちは。

    カテゴリがSharePointになってますが、正しいでしょうか。
    .netの正規表現は以下にリファレンスがありますので参考になさってください。

    https://msdn.microsoft.com/ja-jp/library/az24scfc(v=vs.110).aspx

    • 回答の候補に設定 佐伯玲 2016年3月14日 0:53
    • 回答としてマーク 佐伯玲 2016年3月30日 4:35
    2016年3月9日 9:14
    モデレータ
  • 正規表現 "(.*)(?=/)" はいかがですか?('/'を任意の文字に置き換えます)

    using System.Text.RegularExpressions;
    
    string str = "abc/def";
    MatchCollection matchlist = Regex.Matches(str, @"(.*)(?=/)");
    foreach (Match item in matchlist)
    {
        Console.WriteLine(item.Value);
    }


    • 編集済み kenjinoteMVP 2016年3月9日 9:32
    • 回答の候補に設定 佐伯玲 2016年3月14日 0:53
    • 回答としてマーク 佐伯玲 2016年3月30日 4:35
    2016年3月9日 9:30
  • こんにちは、Hfik353 さん
    フォーラムオペレータの佐伯 玲 です。

    Tak1waさんからの返信にもある通りご投稿頂いているフォーラムは「SharePoint 最新のバージョン」フォーラムですがお間違いはないでしょうか?
    .NET Framework」フォーラムもありますのでもしそちらのほうが良さそうであれば私のほうから移動させて頂きます。

    既にお寄せいただけている情報と共にご確認下さい。

    宜しくお願い致します。

    TechNet Community Support 佐伯 玲

    2016年3月14日 0:53
  • 自分的には以下の記事が分かりやすいと思いますので紹介しておきます。「ASP.NET の」とタイトルが付いていますが、「ASP.NET での検証」のセクションを除けば、ASP.NET に限らず .NET Framework 共通に使えます。

    ASP.NET の正規表現
    https://msdn.microsoft.com/ja-jp/library/ms972966.aspx

    > 例えば、「abc\def」のような文字列の場合「abc」を抽出したいと考えています。

    その正規表現パターンの具体例は、もっと詳しく想定される入力文字列と抽出条件を書いていただけないと提案不可能です。("\" の前なのか "\def" の前なのか? "abc" は特定の文字に限るのか否か? ・・・などなど)

    • 回答の候補に設定 佐伯玲 2016年3月14日 7:20
    • 回答としてマーク 佐伯玲 2016年3月30日 4:35
    2016年3月14日 1:48
  • 例えば、「abc\def」のような文字列の場合「abc」を抽出したいと考えています。

    正規表現に拘らず、この目的が達成できれば良いのであれば、一つの例ですが以下のように分割して最初の一つを取り出すことができます。

    string test = @"abc\def";
    string s = test.Split('\\')[0];

    ★良い回答には回答済みマークを付けよう! MVP - .NET  http://d.hatena.ne.jp/trapemiya/

    • 回答としてマーク 佐伯玲 2016年3月30日 4:35
    2016年3月15日 2:31