C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: 正規表現での漢字マッチングについての質問


(過去ログ 114 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■67211 / inTopicNo.1)  正規表現での漢字マッチングについての質問
  
□投稿者/ Haru (1回)-(2013/07/16(Tue) 18:32:41)

分類:[VB.NET/VB2005 以降] 

こんにちは。
テキスト内の、2つ以上連続する漢字を正規表現で抽出するプログラムを作成しています。
コードを以下に示します。
(使用言語はVB2008です。)

Private Function Test(ByVal txt As String) As String()
    Dim lst As New List(Of String)
    Dim mchs As MatchCollection = Regex.Matches(txt, "\p{IsCJKUnifiedIdeographs}{2,}")
    For Each mch As Match In mchs
        lst.Add(mch.Value)
    Next

    Return lst.ToArray
End Function

ただし、\p{IsCJKUnifiedIdeographs}は中点「・」にもマッチしてしまいます。
\p{IsCJKUnifiedIdeographs}のうち、中点「・」はマッチしないようなパターンはどのようにすればいいでしょうか?
よろしくお願いいたします。

引用返信 編集キー/
■67212 / inTopicNo.2)  Re[1]: 正規表現での漢字マッチングについての質問
□投稿者/ Hongliang (68回)-(2013/07/16(Tue) 21:06:03)
http://msdn.microsoft.com/ja-jp/library/20bw873z.aspx
によるとIsCJKUnifiedIdeographsはU+4E00〜U+9FFFで、
http://ja.wikipedia.org/wiki/%E4%B8%AD%E9%BB%92
によると一般的な中点はU+30FBとなっています。
マッチしないのでは?
// 実際試してみたところマッチしませんでしたし。
引用返信 編集キー/
■67213 / inTopicNo.3)  Re[2]: 正規表現での漢字マッチングについての質問
□投稿者/ Haru (2回)-(2013/07/16(Tue) 21:20:02)
Hongliang さん、ご指摘ありがとうございました。
大変申し訳ございません。激しく勘違いしていました。
漢字(\p{IsCJKUnifiedIdeographs})ではなく、カタカナ文字(\p{IsKatakana})の間違いでした。

Private Function Test(ByVal txt As String) As String()
    Dim lst As New List(Of String)
    Dim mchs As MatchCollection = Regex.Matches(txt, "\p{IsKatakana}{2,}")
    For Each mch As Match In mchs
        lst.Add(mch.Value)
    Next

    Return lst.ToArray
End Function

\p{IsKatakana}のうち、中点「・」はマッチしないようなパターンはどのようにすればいいでしょうか?
よろしくお願いいたします。

引用返信 編集キー/
■67214 / inTopicNo.4)  Re[3]: 正規表現での漢字マッチングについての質問
□投稿者/ Hongliang (69回)-(2013/07/16(Tue) 21:59:47)
2013/07/16(Tue) 22:00:26 編集(投稿者)

先ほど示したMSDNのページの、「文字クラス減算」を参考にしてください。
引用返信 編集キー/
■67216 / inTopicNo.5)  Re[4]: 正規表現での漢字マッチングについての質問
□投稿者/ Haru (3回)-(2013/07/16(Tue) 22:23:49)
Hongliang さん、いつもありがとうございます。

> 先ほど示したMSDNのページの、「文字クラス減算」を参考にしてください。

これを見落としていました。申し訳ございません。
以下のようにして、うまくいきました。

Private Function Test(ByVal txt As String) As String()
Dim lst As New List(Of String)
Dim mchs As MatchCollection = Regex.Matches(txt, "[\p{IsKatakana}-[・]]{2,}")
For Each mch As Match In mchs
lst.Add(mch.Value)
Next

Return lst.ToArray
End Function

ありがとうございました。今後ともよろしくお願いいたします。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -