DOBON.NETプログラミング道掲示板
(現在 過去ログ5 を表示中)

[ 最新記事及び返信フォームをトピックトップへ ]

■35074 / inTopicNo.1)  正規表現で文字の繰り返しパターン
  
□投稿者/ ポポ 一般人(1回)-(2022/06/13(Mon) 10:30:35)
  • アイコン環境/言語:[Windows10 64bit VS2019 VB.NET .NET4.8.04084] 
    分類:[.NET] 

    はじめてお世話になります。

    正規表現で文字の置き換えについて教えて下さい。

    文字が繰り返されてしまっているデータを含んだテキストファイルがあります。
    例)”ああああいいいいううううええええおおおお 御中”
    上記例は”あいうえお”の部分5文字が各4回ずつの繰り返してしまっており、
    その後の” 御中”は繰り返していません。
    これを正しい”あいうえお”に置き換えをしたいです。

    文字数も繰り返し回数も不定です。ただし繰返し回数(例では4)は全文字同じ
    回数になります。

    正規表現で"(.)\1"として"$1"で1文字に置き換えはできたのですが、
    当然、2文字連続文字は全て置き換わります。(例えば2001年の00部分)
    (.)\1+(.)\2+", "$1$2"で2回の繰り返しの場合のみ置き換えで対応したのですが、
    3回以上の繰り返しを置き換えるのに、パターンを全て記述することになり困っております。

    同じ文字の繰り返しパターンが2回以上連続する場合に各1文字に置き換える
    表現が可能か、ご教授頂ければと存じます。
    よろしくお願いします。
引用返信 削除キー/
■35082 / inTopicNo.2)  Re[1]: 正規表現で文字の繰り返しパターン
□投稿者/ shu 大御所(498回)-(2022/06/16(Thu) 08:46:43)
  • アイコンNo35074に返信(ポポさんの記事)

    全部同じ繰り返し回数というのが条件でしょうか?
    ああああいいいうううううえええ

    だとしたらどのように変換するのがただしいのでしょうか?
引用返信 削除キー/
■35083 / inTopicNo.3)  Re[2]: 正規表現で文字の繰り返しパターン
□投稿者/ shu 大御所(499回)-(2022/06/16(Thu) 10:00:29)
  • アイコン
    サンプルです。
    a:元の文字列
    b:連続した文字を1文字に変換
    c:連続数の一番少ない文字に合わせて変換
    
            Dim a = "ああああいいいいううううえええお"
            Dim reg1 As New Regex("(?<c>.)\k<c>+")
    
            Dim b = reg1.Replace(a, Function(m) m.Groups("c").Value)
    
            Dim min = a.Length
            reg1.Replace(a, Function(m)
                                Dim l = m.Value.Length
                                If l < min Then
                                    min = l
                                End If
                                Return ""
                            End Function
                         )
    
            Dim c = reg1.Replace(a, Function(m)
                                        Dim l = m.Value.Length
                                        Dim c1 = m.Groups("c").Value
                                        Dim nm = l - min + 1
                                        Return New String(c1, nm)
                                    End Function
                         )
    

引用返信 削除キー/
■35085 / inTopicNo.4)  Re[2]: 正規表現で文字の繰り返しパターン
□投稿者/ ポポ 一般人(2回)-(2022/06/18(Sat) 15:54:42)
  • アイコンNo35082に返信(shuさんの記事)
    > ■No35074に返信(ポポさんの記事)
    >
    > 全部同じ繰り返し回数というのが条件でしょうか?
    > ああああいいいうううううえええ
    >
    > だとしたらどのように変換するのがただしいのでしょうか?
    全て同じ文字数の繰り返しが条件ですので、
    4文字、3文字、4文字、3文字パターンの場合は変換しません。
引用返信 削除キー/
■35086 / inTopicNo.5)  Re[3]: 正規表現で文字の繰り返しパターン
□投稿者/ ポポ 一般人(3回)-(2022/06/18(Sat) 16:01:18)
  • アイコンNo35083に返信(shuさんの記事)
    ありがとうございます。
    やはり正規表現のみで対応はできないのですね。

    iTextSharpでpdfファイルからテキスト抽出した際、
    同じ文字数の繰り返し文字列が返ってきてしまう場合があり、
    これの対処をしておりました。
    正規表現1行でできないかと格闘していた次第です。

    上記参考にさせてお頂きます。
    ありがとうございました。

引用返信 削除キー/



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

このトピックに書きこむ

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

Mode/  Pass/


- Child Tree -