下のようになるのですが、一つポイントを言うと、\でエスケープしている方は、すごく\が多いですが、
正規表現では\を2個連続で表現しなくてはならず、またC#では\は2個連続でエスケープしなくてはならないので、\が4個連続します。
クォテーションで囲まれたCSVのデータを抜き出すのにも使えます。
C#
private string TEXT07 = "'あさ','ひ''る','''よる'"; private string TEXT08 = "'あさ','ひ\'る','\'\'よる'"; private string TEXT09 = "\"あさ\",\"ひ\\\"\\\"る\",\"\\\"\\\"よる\""; Regex r16 = new Regex("('([^']*(''[^']*)*)')"); MatchCollection m16 = r16.Matches(TEXT07); foreach (Match m in m16) { this.textBox1.Text += "m16:" + m.Groups[1].Value + "\r\n"; } Regex r17 = new Regex("('[^\\\\']*(\\\\.[^\\\\']*)*')"); MatchCollection m17 = r17.Matches(TEXT08); foreach (Match m in m17) { this.textBox1.Text += "m17:" + m.Groups[1].Value + "\r\n"; } Regex r18 = new Regex("(\"([^\\\\\"]*(\\\\.[^\\\\\"]*)*)\")"); MatchCollection m18 = r18.Matches(TEXT09); foreach (Match m in m18) { this.textBox1.Text += "m18:" + m.Groups[1].Value + "\r\n"; } /*結果 m16:'あさ' m16:'ひ''る' m16:'''よる' m17:'あさ' m17:'ひ\'る' m17:'\'\'よる' m18:"あさ" m18:"ひ\"\"る" m18:"\"\"よる" */
VB.NET
Private TEXT07 As String = "'あさ','ひ''る','''よる'" Private TEXT08 As String = "'あさ','ひ\'る','\'\'よる'" Private TEXT09 As String = """あさ"",""ひ""""る"",""""""よる""" ''で囲まれていて、途中に2個連続の'のエスケープを認識するタイプ Dim r16 As Regex = New Regex("('([^']*(''[^']*)*)')") Dim m16 As MatchCollection = r16.Matches(TEXT07) For Each m As Match In m16 Me.TextBox1.Text += "m16:" & m.Groups(1).Value & vbCrLf Next ''で囲まれていて、途中に\を使った'のエスケープを認識するタイプ Dim r17 As Regex = New Regex("('[^\\']*(\\.[^\\']*)*')") Dim m17 As MatchCollection = r17.Matches(TEXT08) For Each m As Match In m17 Me.TextBox1.Text += "m17:" & m.Groups(1).Value & vbCrLf Next '"で囲まれていて、途中に2個連続の"のエスケープを認識するタイプ Dim r18 As Regex = New Regex("(""([^""]*(""""[^""]*)*)"")") Dim m18 As MatchCollection = r18.Matches(TEXT09) For Each m As Match In m18 Me.TextBox1.Text += "m18:" & m.Groups(1).Value & vbCrLf Next '結果 'm16:'あさ' 'm16:'ひ''る' 'm16:'''よる' 'm17:'あさ' 'm17:'ひ\'る' 'm17:'\'\'よる' 'm18:"あさ" 'm18:"ひ""る" 'm18:"""よる"
良い | やや良い | 普通 | やや悪い | 悪い |
---|
投稿日時 | 評価 | コメント |
---|