アプリ版:「スタンプのみでお礼する」機能のリリースについて

ここ数日奮闘しているのですが、秀丸の初心者で上手くいきません。

格関係 case relation
間接受身 indirect passive
間接使役 indirect caus ation



格関係,case relation,
間接受身,indirect passive,
間接使役,indirect caus ation,

の形に直し、データベースで使いやすいように整形したいのですがうまくできません。

\s を , に置き換えすると英単語の間の半角スペースも置き換わってしまいます。

\w\sで英単語を選択できることはわかりましたが、

\s^\w\s では機能しませんでした。

これを置き換える方法を教えていただけませんでしょうか?

どうかよろしくお願いいたします。

A 回答 (3件)

>asciizさんはどのソフトでしていますか?



perlの1行コマンドで試しています。

で、回答No.2を試したところ、確かにできませんでした(汗
行末記号の扱いあたりに問題がありそうです、すみません。

ということで、別のパターンを考えてみました。

s/(\s[^ ]+)$/,\1/

「行末にある、空白類+空白以外行末まで、の前に、カンマを入れる」
とすることにより、最後の単語の前にカンマを入れられました。

こちらでの実行テストは、単語テキストを words.txt に保存しておいて、コマンドラインから

C:\> perl -p -e "s/(\s[^ ]+)$/,\1/" <words.txt

のように実行しました。
perl はWindows標準コマンドではありませんので、Windows用Perl(Active perl など)をインストールする必要があります。
    • good
    • 0

>Code mixing コードミキシング


>英単語が先に来る場合に対応できませんでした。

(1)の応用です。
「英単語が先」ではなく「日本語が後」と考えれば、

(1')最後の単語(およびスペース)の前にカンマを付ける
s/(\s\w)$/,\1/

これで良いでしょう。(2)は一緒です。


日本語が前になる行と後になる行が1ファイル中に混ざるのだと、さすがに相当難しくなりますが…?

この回答への補足

asciizさん、ご回答ありがとうございます。
残念ながら秀丸ではできませんでした。
asciizさんはどのソフトでしていますか?

補足日時:2014/04/14 03:13
    • good
    • 0

秀丸は知らないので、「s/(検索パターン)/(置換パターン)/」という形で書きますけど、



(1)最初の単語の後ろにカンマを付ける
s/^(\w)/\1,/

(2)行末にカンマを付ける
s/$/,/

の2段階でやれば簡単でしょう。

いっぺんにやろうとすれば、こうしてもいいですが。

s/^(\w)(.*)/\1,\2,/

↑これは、「行の最初の単語の後と、それに続く全ての部分の後ろに、カンマを付ける」となっていて、(2)とは少し考え方が違っています。

この回答への補足

ありがとうございます!
おかげさまで無事できました。
(1)で「日本語、英単語」のように変換することができました。
ただ、

Code mixing コードミキシング
Cohort コーホート
Complementary distribution 相補分布

のように英単語が先に来る場合に対応できませんでした。
この場合の対処方法も教えていただけると勉強になります。
ずうずうしいお願いですがよろしくお願いします。

補足日時:2014/04/08 07:07
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!