56127


下記の作業をテキストエディタで正規表現を使用して整形していますが、バッチかなにかで自動化する方法があれば教えていただきたいです。

※バッチにこだわっているわけでなく、他に良い方法があればそちらでも構わないです。

(例)

[code]

    ことば
    いぬ
    ねこ
    
[/code]

①文字列の前後に`.*`, `.*|`を挿入

[code]

    .*ことば.*|
    .*いぬ.*|
    .*ねこ.*|
    
[/code]

② ①を横一列に整列

[code]

    .*ことば.*|.*いぬ.*|.*ねこ.*|
    
[/code]


CC BY-SA 4.0
2019-06-24T21:55:59.213
56073
2019-07-02T14:33:47.700
2019-06-25T00:42:44.957
3060
32946
question
python python3 batch-file
バッチで自動化する方法を知りたい


pythonと外部モジュールを使える環境でしたら、pythonでバッチ処理を行う方法をご提案します。  
下記はクリップボードを読み取って標準出力とクリップボード出力を行うサンプルコードです。

あらかじめ外部モジュール`pyperclip`のインストールが必要です。

### python版

[code]

    import pyperclip
    
    src = pyperclip.paste()
    # ToDo 下記の文字列はテストコードなので削除してください
    src = '''ことば
    いぬ
    ねこ'''
    dest = ''
    for s in src.splitlines():
        dest += '.*{}.*|'.format(s)
    
    # .*ことば.*|.*いぬ.*|.*ねこ.*|.*.*|.*表.*|
    print(dest)          # コンソール出力
    pyperclip.copy(dest) # クリップボード出力
    
[/code]

pythonを使うことで`while`と`sleep`でクリップボードを監視する処理に変えたり、`argv`からコマンドライン引数を読み取ってテキストファイルやCSVファイルを処理するよう機能追加も可能です。

pythonや外部プログラムのインストールが許可されていない環境の場合は別回答となりますので、OSおよび入出力方法(ファイル入力して標準出力など)、運用方法(スケジュールで定期処理したいなど)と合わせて質問に追記なさってください。

* * *

`※バッチにこだわっているわけでなく、他に良い方法があればそちらでも構わない`
点と、手動でクリップボードにコピーしてから整形を行う運用をWindows10で行う点から、Powershellで整形してクリップボードに貼り付けるサンプルコードを追加します。

### Powershell版

[code]

    $src = Get-Clipboard
    $sb = New-Object System.Text.StringBuilder
    foreach($s in $src) { $sb.AppendFormat(".*{0}.*|", $s) > $null }
    $dest = $sb.ToString()
    $dest
    # .*ことば.*|.*いぬ.*|.*ねこ.*|
    Set-Clipboard $dest
    
[/code]


CC BY-SA 4.0
2019-06-25T00:46:01.037
56074
2019-06-26T03:43:58.940
2019-06-26T03:43:58.940
9820
9820
56073
answer


> ※バッチにこだわっているわけでなく、他に良い方法があればそちらでも構わないです。

Windowsっぽいので  
・エディタのマクロを使う  
・EXCELを開いて張り付け、VBAマクロや、セル連結でほしい形を作ってコピペする  
・言語のマクロを覚えなくても、キーボードマクロで簡略化する


CC BY-SA 4.0
2019-06-26T15:28:55.907
56118
2019-07-02T14:33:47.700
2019-07-02T14:33:47.700
34277
34277
56073
answer

[code]

    #Python 3
    li = ["kotoba","inu","neko"]
    li2 = []
    for s in li:
    　　　s = ".*"+s+".*|"
         li2.append(s)
    for s in li2:
         print(s)
    #result: 
    #.*kotoba.+|
    #.*inu.+|
    #.*neko.+|
    print("".join(li2))
    #result:.*kotoba.+|.*inu.+|.*neko.+|
    
[/code]


CC BY-SA 4.0
2019-06-27T01:27:18.547
56127
2019-06-27T02:17:09.537
2019-06-27T02:17:09.537
19110
34880
56073
answer