[過去ログ] Regular Expression(正規表現) Part14 [無断転載禁止]©2ch.net (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
924: 2019/08/24(土)13:46 ID:6nD2xE5w(1) AAS
(?<=(aa.*|bbb))c
925: 2019/08/25(日)15:17 ID:GRZE+Rz9(1) AAS
(?<=aa|bbb)c
926
(1): 2019/09/01(日)12:33 ID:fodjUzDJ(1/2) AAS
JS(ES2017)です

「貫樣」みたいな、中国語でしか使われないような怪しい漢字を弾きたい
(日本語で使われる漢字のみ許可したい この場合は「貫」だけ残して「樣」は消したい)
のですが

CJKとか言って一緒くたになっている以上、Unicode範囲指定などで判別することはできないですかね…?
927
(1): 926 2019/09/01(日)12:38 ID:fodjUzDJ(2/2) AAS
「樣」は一応日本語でも使うみたいですね…
とりあえず常用漢字じゃなければ弾くくらいでもいいのですが
常用漢字表を作って比較するくらいしかない…のかな?
928
(1): 2019/09/01(日)13:31 ID:kCJZVLuH(1/2) AAS
外部リンク[htm]:www.shuiren.org
929
(1): 2019/09/01(日)13:35 ID:kCJZVLuH(2/2) AAS
ねむい
画像リンク[gif]:kanji.zinbun.kyoto-u.ac.jp
外部リンク[html]:kanji.zinbun.kyoto-u.ac.jp
930: 2019/09/01(日)18:46 ID:VXfAHt8z(1) AAS
>>927
樣は様の旧字で現在でも許容字体扱いだから「常用漢字表」にも
出て来る。
外部リンク:ja.wikipedia.org

>928-929みたいなのはあくまでコンピューター用のコードの
まとまりの話だから常用漢字か否かは区別していない。

上のリンクのウィキの本表をエクセルにコピーして2列目の
通用字体だけを残して改行を消してやり、それと平仮名や
記号を除外規定にして残り全部消すとかなら正規表現だけでも
さっさと終わるんじゃないかな。
省3
931
(1): 2019/09/01(日)21:04 ID:fO6VcsLE(1) AAS
Google謹製の正規表現ライブリ「re2」でググったら「バイオハザード2 RE:2」が検索上位に来るのどうにかならない?
932: 2019/09/01(日)22:01 ID:Zrnas7uJ(1) AAS
>>931
s/^(.+)でググったら「バイオハザード2 RE:2」が検索上位に来るのどうにかならない?$/$1/
933: 2019/09/01(日)22:50 ID:8GDP8quV(1) AAS
RE2 regex とか RE2 正規表現 とかでググれば
934
(1): 2019/09/10(火)22:48 ID:CokwQGf+(1) AAS
直前の文字が1回以上出現することが確実なケースで、仮に0回の出現として考慮しても問題がないという場合に、
+ではなく*で正規表現を記述する理由はありますか?

例えば、慣例として*のほうを使うとか、*とするとマッチしない場合のみ+を使うとかそういう
935: 2019/09/10(火)23:21 ID:1dbF51qB(1) AAS
0回も許容するなら+ではなく*にする理由は0回も許容するからとしか
936: 2019/09/10(火)23:26 ID:L5QX1JAH(1) AAS
具体例で示してくれんとなんか曖昧でよくわからんね
937: 2019/09/11(水)12:05 ID:zFEVPQj4(1) AAS
>1回以上出現することが確実なケース

>仮に0回の出現として考慮しても問題がない

矛盾してるな
938: 2019/09/11(水)15:12 ID:wb8QVF41(1) AAS
>>934
出現が確実ではあるが、もしなかった場合にも対応したい
そういう要求があり、動作にも差し支えない場合なら * をつかう
ということに尽きるでは?
939: 2019/09/11(水)16:12 ID:h8Pfy2ne(1) AAS
>>762
940: 2019/09/12(木)02:26 ID:xpiKRNxb(1/3) AAS
やっぱ質問して放置か、教える側も学習すべきだな
まともな質問じゃないと思ったらスルーでいい
941: 2019/09/12(木)04:33 ID:+6m2JHnd(1) AAS
別におかしな質問じゃないだろ
942: 2019/09/12(木)06:58 ID:1ik9S0iw(1) AAS
いや普通におかしいだろ
なんか無理矢理の条件考えて論争させようとしてるような気がする
943: 2019/09/12(木)08:21 ID:xpiKRNxb(2/3) AAS
自分なら人にこういう質問レスを書くかなって考えてみて絶対書かないと
思うものにはレス付けないのがいいかもね
説明不足で意味不明なものとかも
944: 2019/09/12(木)09:22 ID:TOasMGF3(1/4) AAS
●Regular Expressionの使用環境
Mery

●検索か置換か?
置換

●説明
属性内のアルファベット小文字を削除

●対象データ
id="105I42b 104I41b"
id="99E65e 95B43d 92B87d"
id="97B22d 95D18a 93B22c 93E23b"
省5
945: 2019/09/12(木)10:00 ID:bJPykHLq(1/4) AAS
わかりやすいように、できるだけそのまま書くならこうかな

●検索文字列
(id="|\G )((\d+[A-Z]\d+))[a-z]

●置換文字列
\1\2
946
(1): 2019/09/12(木)10:04 ID:bJPykHLq(2/4) AAS
置換に問題は無いけど()が二重になってたミス修正
(id="|\G )(\d+[A-Z]\d+)[a-z]
947: 2019/09/12(木)10:30 ID:TOasMGF3(2/4) AAS
>946
出来ました!
ありがとうございます。

田中哲スペシャルっていうやり方なのでしょうか
948
(1): 2019/09/12(木)11:08 ID:bJPykHLq(3/4) AAS
\Gは照合開始位置と呼ばれる物で、マッチした箇所の後の境界にマッチしてくれるので
さっきのように(特定の文字列or前回置換しところ)の後に置換したい文字列があるときとかに便利で定番

田中哲スペシャルは\gで同じ表現をもう一回使うって奴だから違うかな
949
(1): 2019/09/12(木)11:58 ID:TOasMGF3(3/4) AAS
>948

勉強になります。

ちなみに最初の値にはアルファベットがついてないケースだと拾えなかったのですが
id="97B22 95D18a 93B22c 93E23b"

対応策ありますでしょうか?
950
(1): 2019/09/12(木)12:04 ID:xpiKRNxb(3/3) AAS
自分ならこの時点でスルー
\Gは文頭にもマッチするから誤爆対策を忘れずに
951
(1): 2019/09/12(木)15:04 ID:bJPykHLq(4/4) AAS
>>949
自分でも書けない訳じゃないみたいだし、魚を与えるより釣り方を教えよの精神でヒント
変更のない置換後でも\Gは引っかかるので、小文字がないidも全部マッチするようにすれば

こういうのを後出しされるとお互い二度手間だから
質問するときはパターンを網羅的に書いといた方が良いよ

あと>>950が指摘してくれたように誤爆が懸念されるので、\Gを\G(?<=.)にした方が良いかもしれない
●対象データが正確で、実際の対象もidのみが載ったリスト形式みたいなものなら要らないけど
952: 2019/09/12(木)18:04 ID:TOasMGF3(4/4) AAS
>951
ヒントありがとうございます。
残りは自分でがんばってみます。
953: 2019/09/12(木)18:08 ID:EfYu2rO4(1) AAS
文字列 "プログラマー" を "プロクライマー" に書き換える正規表現を教えて下さい
954: 2019/09/12(木)21:50 ID:Jdu1U3XN(1) AAS
そこにソースがあるから登るんだ。
955: 2019/09/12(木)22:19 ID:cqw0/uFd(1) AAS
正規表現の使い方じゃなく作り方、バックトラックなど理論から解説している書籍やそれに準ずるサイトなど知っていたらご教示ください。
こうやればこうなるよ、こういうときはこうすればいいんだよ的な学習では身に付かなくて…
956: 2019/09/12(木)22:56 ID:Yy9Clfy1(1/2) AAS
自分が参考にしたのはここだったかな
外部リンク[htm]:fussy.web.fc2.com

実装の仕方がある程度分かれば鬼車の作者さんのブログ(rubyの一件以前の記事)も参考になると思う
957: 2019/09/12(木)23:14 ID:Uy9QyXie(1) AAS
ありがとうございます!
rubyの一件って何ですか?(何て検索したらいいですか?)
958
(1): 2019/09/12(木)23:43 ID:Yy9Clfy1(2/2) AAS
Rubyの作者さんと何かあったようで嫌気が差したのかそれ以後ブログで正規表現のことを
取り上げる頻度がめっきり減っちゃったんですよ
959: 2019/09/13(金)08:32 ID:sQZEDK+j(1) AAS
>>958
ありがとうございます!
なるほど、残念ですね…
960: 2019/09/13(金)10:47 ID:wKEqF87n(1) AAS
955
外部リンク:codezine.jp
外部リンク:tociyuki.hatenablog.jp
外部リンク:hellocode.jugem.jp
961: 2019/09/13(金)11:54 ID:X5DxpBbM(1) AAS
正規表現はどの言語でも共通で使えますか?それともちょっと違ったりしますか?
962: 2019/09/13(金)12:02 ID:KuW4wLhZ(1) AAS
ちょっと違ったりします
963
(1): 2019/09/13(金)13:25 ID:8XwQqyT8(1/2) AAS
Ruby で作った。
一旦、パターンで一致させてから、一致した行だけを変換した。
ただし、同じ行に、id="〜" が複数あると、バグる!

src = <<'EOT'
id="aAxy Xz"

id=""
id="9"
id="9y"
EOT
省12
964: 963 2019/09/13(金)13:43 ID:8XwQqyT8(2/2) AAS
>>963
修正

>ただし、同じ行に、id="〜" が複数あると、バグる!
大丈夫だった。正常に動く
965
(1): 2019/09/16(月)02:45 ID:dK4dr8mE(1) AAS
JSで
101 dogs
7 little goats
30 8 year old humans

↑をそれぞれ
["101", "dogs"]
["7", "little goats"]
["30", "8 year old humans"]
と切り分けるにはどんな正規表現を使えばよいでしょうか?

["7", " ", "little goats"]のような形でもかまいません
省4
966: 2019/09/16(月)02:59 ID:/xGIA7r1(1) AAS
正規表現を使えないなら文字列操作でやればいいだけ
正規表現を使いこなせてない人が使うとバグの温床になるからお勧めしない
967: 2019/09/16(月)07:18 ID:m2l8x1P1(1) AAS
>>965
.split(' ', 2)
968
(1): 2019/09/16(月)12:07 ID:oN5KVYJd(1/3) AAS
Ruby では、

chomp で、末尾の改行を削除する。
split の2 は、分割の最大数

text = <<'TEXT'
101 dogs
30 8 year old humans
TEXT

p ary = text.lines( chomp: true ).map { |line| line.split( " ", 2 ) }

出力
[["101", "dogs"], ["30", "8 year old humans"]]
969
(2): 2019/09/16(月)15:25 ID:YU5GpdCi(1/3) AAS
JSでは、
["30", "8 year old humans"]
ではなく
["30","8"]
となる
limitは、分割結果の制限であり、見つかった要素の数をそこまでで打ち切る
970
(1): 968 2019/09/16(月)15:36 ID:oN5KVYJd(2/3) AAS
>969
えー!!
971: 2019/09/16(月)15:52 ID:YU5GpdCi(2/3) AAS
>>970
外部リンク:developer.mozilla.org
972: 2019/09/16(月)16:04 ID:2suJbq8i(1/2) AAS
matchじゃなくてsplitで

str.split(/(?<=^\d+) /)



array = str.split(" ");
array[0] + array.slice(1).join(" ")

とかじゃない?
973: 2019/09/16(月)16:06 ID:2suJbq8i(2/2) AAS
間違えた
下の最後こうか

[array[0], array.slice(1).join(" ")]
974
(1): 2019/09/16(月)16:24 ID:VWND3fAL(1) AAS
素直に
"30 8 years old".match(/^(\d+) (.*)$/).slice(1)
じゃいかんの?
975: 2019/09/16(月)16:28 ID:53ZoYsUm(1) AAS
正規表現逆引きcgiとかないの?
雑に日本語で書き込んだらAIが判断して正規表現を返してくれる
そんなの
976
(1): 2019/09/16(月)17:07 ID:YU5GpdCi(3/3) AAS
>>974
マッチしない場合でもエラーにならないよう保険かけとく方がよいのでは?
(str.match(/〜/)||[]).slice(1)
977
(1): 2019/09/16(月)17:20 ID:oN5KVYJd(3/3) AAS
var ary = new Array( 2 )
var str = "30 8 year old humans"

var pos = str.indexOf( " " );
console.log( pos ) // 2

if( pos === -1 ) { // 見つからない
// 何かの処理
} else {
ary[ 0 ] = str.substring( 0, pos )
ary[ 1 ] = str.substring( pos + 1 )
}
省1
978: 2019/09/16(月)17:34 ID:hRvCpxCQ(1) AAS
>>976
そう言うのは質問者に適宜やってもらえば良い
絶対マッチするという前提かもしれないし
979: 2019/09/16(月)17:40 ID:enU8we0d(1/3) AAS
>>969
知らなかった
980
(2): 2019/09/16(月)18:09 ID:enU8we0d(2/3) AAS
const str = '30 8 year old humans'
(([first, ...rest]) => [first, rest.join(' ')])(str.split(' '))
//=> ["30", "8 year old humans"]

あ、正規表現がねぇw
981: 2019/09/16(月)20:46 ID:RGmahsTZ(1) AAS
.split(/ (.*)/,2)
982
(1): 2019/09/16(月)22:28 ID:enU8we0d(3/3) AAS
次スレ立てたんだけど、
Regular Expression(正規表現) Part15
2chスレ:tech

テンプレ貼ってたら>>3 がNGワードとやらで貼れません。
というわけであとよろしく。
983
(1): 2019/09/17(火)10:37 ID:aFTX7+W5(1/3) AAS
>>982
>>3
のテンプレにある

【 初心者 】 正規表現 【 入門 】 ←閉鎖
http://funcchan.blog16.fc2.com/

5ch では、fc2 は、宣伝禁止かも!
これは、半角で書き込めないので、全角に変換した

このURL を削除すれば?

MANGO 板で、NG ワードを調べられる
984: 977 2019/09/17(火)12:02 ID:aFTX7+W5(2/3) AAS
>>977
を修正した

const str = `101 dogs
30 8 year old humans`

const lines = str.split( "\n" ); // 配列

const results = lines.map( line => {
var ary = new Array( 2 )
const pos = line.indexOf( " " );

if( pos === -1 ) { // 見つからない
// 何かの処理
省7
985: 2019/09/17(火)16:12 ID:sjKTVv5w(1) AAS
amazonもダメみたいだね、本の紹介しようとしたら弾かれた
986: 983 2019/09/17(火)17:07 ID:aFTX7+W5(3/3) AAS
Amazon も、半角で書けないだろ

一番恐ろしいのは、はてなブログ!
書き込み禁止画面が出ずに、いきなり吸い込まれて、アクセス禁止にされる!

同様に、twitter の長いURL も、吸い込まれるものがあるらしい!

5ch で、しつこく宣伝する香具師をはめるために、いきなりのアク禁!

MANGO 板に書き込んで、何がNG ワードが、地道に判定していくしかない
987: 2019/09/17(火)17:46 ID:+bGUkqkJ(1/2) AAS
test
外部リンク:www.ama%7Aon.co.jp/dp/4938939703
988: 2019/09/17(火)17:53 ID:Xou3E6HC(1) AAS
はてブのURL、5ちゃんに書けないのか。気づいてなかったわ。
989: 2019/09/17(火)17:56 ID:+bGUkqkJ(2/2) AAS
test
外部リンク:d.h%61tena.ne.jp/keyword/%A5%E2%A5%CE%A5%B7%A5%EA%A5%C3%A5%AF%A5%AB%A1%BC%A5%CD%A5%EB
990: 2019/10/02(水)17:34 ID:dOlpIXop(1) AAS
U . M . E
991
(1): 2019/10/12(土)20:41 ID:VAjNOt6S(1) AAS
以下を正規表現で行うにはどうしたらよいでしょうか。
-----元データ------------------
<aaa bbb
ccc
ddd>
<eee>
ffff ggg
<hhh
iiii>
-----------------------------
省6
992
(1): 2019/10/12(土)20:46 ID:osgjxuFW(1) AAS
改行無視のオプション+<>の間を取得して改行を空白に変更でどう?
993
(2): 2019/10/12(土)22:51 ID:7TGqmTiW(1) AAS
>>991
Ruby
$ cat input.txt | ruby -e 'puts ARGF.read.gsub(/<(.*?)>/m) { |m| $1.gsub("\n", "") }'

Node
$ cat input.txt | node -e 'process.stdout.write(fs.readFileSync(0).toString().replace(/<([\s\S]*?)>/mg, ($0,$1)=>$1.replace(/\n/g, "")))'

sed
$ echo $(cat input.txt) | sed -E 's/<([^>]*)>/\n\1\n/g' | sed -e '/^ *$/d' | sed -e 's/^ *//'

sedのは一旦改行削除して、<..>の前後に改行追加して、空行削除して、行頭の空白を削除してる
994
(3): 2019/10/13(日)01:09 ID:Gu1oNPJo(1/2) AAS
Ruby で、

text = <<"EOT"
<aaa bbb
ccc
ddd>
<eee>
ffff ggg
<hhh
iiii>
EOT
省6
995: 2019/10/13(日)01:37 ID:5y3mzviq(1/3) AAS
>>994
コピペしたら元データに行末スペースが入ってたからそうしたんだけどこれは5chの仕様なのかな?
行末スペースがないなら空文字じゃなく半角スペースに置換だね
996
(1): 994 2019/10/13(日)03:33 ID:Gu1oNPJo(2/2) AAS
5ch からコピーすると、行末に半角空白が入るから、
漏れは、Ruby で削除してる

# クリップボード内の複数行文字列の、各行の先頭・末尾から、
# 連続する空白類を除去して、クリップボードに入れる

str = `powershell Get-Clipboard`
str.encode! Encoding::UTF_8, Encoding::CP932 # UTF_8 へ変換

ary = str.each_line.map( &:strip ) # 連続する空白類を除去する

IO.popen( 'clip', 'w:cp932' ) do | clip | # CP932 へ戻す
clip.print( ary.join "\n" )
end
997: 2019/10/13(日)07:48 ID:0NSyRtEU(1) AAS
>>992-994
皆さんありがとうございました。
後方参照をさらに置換すれば良かったんですね。そんな方法があったとは!!
助かりました。
998: 2019/10/13(日)22:01 ID:5y3mzviq(2/3) AAS
>>996
エディタのコマンドで対応できることだから
わざわざスクリプト書くのはちょっとオーバーキルかな
999
(1): 2019/10/13(日)22:05 ID:w1EMiXuT(1) AAS
VScodeの正規表現検索、置換はjavascriptだろうか?
1000: 2019/10/13(日)22:42 ID:5y3mzviq(3/3) AAS
>>999
ripgrep
1001
(1): 1001 ID:Thread(1/2) AAS
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 942日 20時間 38分 13秒
1002
(1): 1002 ID:Thread(2/2) AAS
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。

───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
省4
1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.729s*