Regular Expression(正規表現) Part11
1 :
デフォルトの名無しさん :
2013/03/10(日) 20:10:13.34
スルーされにくい質問のテンプレと例 ●Regular Expressionの使用環境 Java1.5 ●検索か置換か? 検索 ●説明 各行の1番目のAまでを検索したい ●対象データ ABCA BCAA CABA ●希望する結果 ABCA ^ BCAA ^^^ CABA ^^ ※ ^ はアンダーラインだそうな ^^;
まんまん
全スレ最後のほうで執着してたやつが立てたのか まあ一応乙
9 :
デフォルトの名無しさん :2013/03/11(月) 15:18:19.29
RegularExpressionでIPアドレスが正しいかどうか判断するのは無理かね? 無理なら各オクテット切り出して0〜255の範囲にあるか地道にチェックするけど。
11 :
デフォルトの名無しさん :2013/03/11(月) 17:16:11.17
IPv4ならこんな感じか [12]?\d\d\.[12]?\d\d\.[12]?\d\d\.[12]?\d\d\
ブサヨがよーチョンがよー
>>10 IPアドレスの定義は?それを明示すれば誰かが教えてくれる。
(?:\d|[1-9]\d|1\d{2}|24\d|25[0-5])\.(?:\d|[1-9]\d|1\d{2}|24\d|25[0-5])\.(?:\d|[1-9]\d|1\d{2}|24\d|25[0-5])\.(?:\d|[1-9]\d|1\d{2}|24\d|25[0-5]) こんな感じ?
ごめん間違えた (?:\d|[1-9]\d|1\d{2}|2[0-3]\d|24\d|25[0-5])\.(?:\d|[1-9]\d|1\d{2}|2[0-3]\d|24\d|25[0-5])\.(?:\d|[1-9]\d|1\d{2}|2[0-3]\d|24\d|25[0-5])\.(?:\d|[1-9]\d|1\d{2}|2[0-3]\d|24\d|25[0-5])
きついな・・・
IPv6はマジでヤバそう
>>18 正規表現よりinet_pton使ったほうが確実。
>>14 >>18 とかもそうだけどIPって言っても色々あるからね。
ローカルアドレスを含めるかとか、999がマッチしても実用上困らないので\d{1,3}でいいです、とか。
●Regular Expressionの使用環境 Ruby 1.9 ●検索か置換か? 検索 ●説明 red または blue が含まれてない行を検索したい。 ●対象データ yellow red blue green orange red green yellow orange black yellow orange white green yellow blue orange ●希望する結果 black yellow orange white
入門サイト読めば出来るようになるから読んでこい。先読み否定ってやつな。
こんな感じで、質問が来たら、 「入門サイト読めば出来るようになるから読んでこい」って 返していけばいいのか、このスレは?
ググったら一発で出るようなのは流石に無いだろってかググった方が早いだろ
それって正規表現すべてに当てはまる話じゃね? ググったらわかる。 IPv6とかググったらわかるでしょ?
○○の正規表現みたいは話はするなってことだな。
否定先読みでもいいけど Rubyなら素直に!~でいいんじゃ
というかプログラミングするなら正規表現くらい自分で何とかしろや。 本を読まずに人に聞くような奴は向いてない。
ここでやっと正論が出たか
でも他に性器表現しかやること無いんだろ?
正直な話、「否定」と「数字の比較」は正規表現だけではやりたくない
クレクレスレと勘違いしてる馬鹿がたまに迷い込む
正規表現には限界があるからな。
正規表現ごときなんでスレがあるの
奥が深いからだろ
珠玉の正規表現ください
正規表現ってなに? regular expressionなら知ってるけど
レギュラーエクソシスト下さい
うちには上級エクソシストしかいません
disorder expression
43 :
デフォルトの名無しさん :2013/03/14(木) 00:30:10.60
あるある探検隊
このスレって書き込みが多い時と少ない時の波が激しいよねw 底辺プログラマーの人が多いのかな?
ほんとはググってから回答してるんでしょ?
⊃ ◎
黙ってふくろう本読め。カネの無い奴は中古で第一版が700円で買えるぞ。
>>46 正規表現がそんな難しいものだと思ってんの?
>>49 正規表現がそんな簡単なものだと思ってんなら帰れ。
くっそかんたんだわ
そんな簡単なことを質問してる人は馬鹿なの? そしてそれに回答してるお前はなんなの?
●Regular Expressionの使用環境 Ruby 1.9 ●検索か置換か? 検索 ●説明 red または blue が含まれてない行を検索したい。 ●対象データ yellow red blue green orange red green yellow orange black yellow orange white green yellow blue orange ●希望する結果 black yellow orange white
正規表現、難しくないよ。簡単だよ。
この糞かんたんな質問に自己顕示欲を満たしたいだけの初心者は回答どうぞ
暇になると性器表現しに風俗に逝ってしまう人が多いスレはここですか?
>>55 はい
^(?!.*\bred\b)(?!.*\bblue\b).*$
(?:red|blue) という発想が無いのが素人臭くて実にいいね。
そう思うなら書き直せ屑
お前が書き直せコード乞食
プププ 無能共が吠えてやがるw
俺みたいな正規表現少しかじった程度の初心者でも分かるというのにお前らときたらw
え、これが正解だと思ってんの?
実力が伴っていないんですね、わかります
$を付ける奴はチキン
低能しかいねーわw
書いたコードにケチつけられたからって全員を低能扱いするなよ低能
>低能扱いするなよ低能 語彙が貧弱すぎてワロタw
東横線が繋がったぜ、羨ましいだろ、ガハハ
やはり在日朝鮮人には日本語が通じない
チョンは性器表現しか使えませんw
ここまで俺の自演
こんなクソみたいな流れじゃ性器表現の方が面白いだけマシだな
あんなのが面白いとか小学生かよ
>>74 え、それマジで言ってる? え!?マジ??うわキモッ
そりゃレ○プ大好き韓国人だからなw
おまえ韓国人って単語を差別用語かなにかと勘違いしてるだろ 一応違うんだぞ。
え、違うの?
まだ。な
お前は韓国人と言われて喜ぶのか?
漏れは在日コリアンだけと日本人ニダw
俺は人種差別と韓国人が嫌いだ
俺は人種差別をする韓国人が嫌いだ
俺は韓国人が大嫌いだ
私は戦争が大好きだ
私がルールブックだ
私が神か!?
神はデンデだよ
くっそつまらんな
93 :
デフォルトの名無しさん :2013/03/16(土) 23:58:59.60
んでんでんでんで
まよいまいまい
RegexってC言語の標準ライブラリだけで実装したらきついっすかね?
自前実装は想像もしたくねぇなー…
むしろ malloc()/free() くらいしか使わないんじゃないの?
その「むしろ」はどこに掛かってるんだw
いやいや、むしろstrcmpだろ。
チンコはNGにするけど パチンコはNGにしない たとえばの話なんですが2chブラウザなどでNGワードを指定する場合どう書けばいいですか
パチンコもNGにしたほうがいい
むしろをつけるべきでした。
無理だろうね バカバカしいはOKでバカはNGみたいなのは正規表現では無理
うわ、こいつマジレス、きもっ
あーあ見え見えの挑発に乗っちゃって…
こんな質問をするぐらいだからきっとspyle使いなんだろうな
>>104 これだとその一手にしか使えないな
バカげてる・バカなの?などいちいち追加しないといけない
逆転の発想でチンコとバカは完全一致にするとか
パチンカスニート
極太でチンカスまみれのヨーロッパチンコしゃぶりたい
今日も溜まりにたまった白濁の液体を抜き取るぜ
結局性☆器表現スレに…ドピュドピュドピュピュー
あ、パパチンコがガチガチに勃起してるよ? どうして欲しいの?
たまらん
.resSystem:contains("◆") { color: #008000; } font-weight: normal; color: #008000;
コメント内の任意の文字を全て半角スペースに置き換える正規表現は可能でしょうか? aaaは固定ではなく、長さや文字も任意です。 文字数分スペースに置き換える必要があります。 変換前 /*aaa*/ 変換後 /* */
可能です。頑張って正規表現を覚えて下さい。
>>118 質問の意味わかってないよね?
これは正規表現じゃできないでしょ
コメント以外は変換しちゃならんのだろ?
// hogehoge ←これは変換
/* hogehoge */ hogehoge ←コメント内のhogehogeのみ変換
hogehoge ←これは変換しない
/*
hogehoge ←これは変換
*/
こんなもん正規表現でできるかよ
>>119 使用環境次第だな。
複数行をサポートするかどうか。
使用環境次第で正規表現の適用範囲も変わる。
適当なこと書いて煽っとけば正解が出てくるメソッドだろうと思うけど 問題にするべきは入れ子の場合だと思うよ。
そもそも件のコメントに入れ子が許されてるのかが問題だな
>>120 複数行以前に、おれにはしたが対応できない…
先読み後読み駆使して対応できるの?
/* hogehoge */ hogehoge
>>124 >>119 はhogeとか使ってるキチガイなんだからまともに受けとるな
正常な精神構造した人間ならhogeなんか使わないよ
126 :
デフォルトの名無しさん :2013/03/22(金) 12:35:21.97
>>117 環境は分からんけど余裕と思う
2時間も勉強すればいけるんじゃね?
それくらいなら正規表現使わずにC言語でゴリゴリ書いても余裕なレベル
格闘ゲームのコマンド入力チェックにRegex使うってマジ?
>>119 可能だから可能と言ってるんですよ。あなたには出来ないだけです。
130 :
デフォルトの名無しさん :2013/03/22(金) 14:06:20.39
regex eオプション でggrks
正規表現単体で出来るんですよ。ちゃんとマスターしてる人なら。
正規表現と法華経 どちらが最高の人生にするために有用ですか?
正規表現単体とか言ってる時点でマスターしてないのが良くわかる
そりゃもちろん法華経
人生いろいろ
つか前スレで似たような質問あって解決したばっかだろうが。
>>138 ちゃんと解答しないならそんな無意味な書き込みするなよ
すんません。どうしてもわかりません。 下のコメント内のhogehogeをスペースに置き換える正規表現を教えて下さい。 /* hogehoge */ hogehoge
検索 (/\*)(?!\*/).(?=.*\*/)|\G(?!^)(?!\*/). 置換 $1半角スペース これが動かない環境なら氏らね。テンプレ読まずに環境を書かないおまえが悪い。 言っとくけどこのスレには俺並みに正規表現に詳しい奴はいないからな。土下座しても他の奴には作れない。
>>119 >こんなもん正規表現でできるかよ
>こんなもん正規表現でできるかよ
>こんなもん正規表現でできるかよ
C言語のコメントにマッチする正規表現は、比較的難しいとされる正規表現パズルの代表例みたいなもんだから、 普通に正規表現を使ってるレベルなら、できないと考えてもおかしくはない。
テキストエディタのブロックコメント判定も正規表現でやってるよな
>>145 簡単だけど誤認する可能性のある奴のこともあれば、ややこしいけど正しく判定する奴のこともあるな。
>>146 え?何が出来ないって?出来てる俺に説明して。
ネストしないんなら perl -i~ -CSDL -pe 'BEGIN{$/=undef}s{(?<=/\*)(.*?)(?=\*/)}{$1=~s/\S/ /gr}gse' PROG.c でいいんじゃないの。
空気読めない人ってさいあくー
こうまでしてRegular Expressionを使わなくても。
今さらだよね
153 :
デフォルトの名無しさん :2013/03/22(金) 21:36:30.62
コメントアウトごときCの標準ライブラリだけで片付けてくれるわ! ふはははははははははははははははははははははは!
>>95 strprtk、strstr
この辺り駆使するだけでいけそうだが
何が? 1日潰せば正規表現ライブラリくらい作れるだろ。
>>157 分かったからまずは代入から勉強したまえ。
おまんこきつきつですぅ
160 :
デフォルトの名無しさん :2013/03/25(月) 18:14:49.20
いやでもC言語で正規表現しようと思ったらどうすんの?
regcompとregexec使うだけだろ
C言語標準じゃないじゃん。 標準ライブラリだけでやらないと フェアじゃないね。
フェアもくそもあるかい
できるかどうかではない。 何を使うかだ。
アンフェア上等、でも要求仕様は満たそうぜw
ああ、>95のつもりだった
無慈悲な鉄槌 無慈悲な懲罰 無慈悲に撃滅 無慈悲に粉砕 無慈悲な報復 無慈悲な報復打撃 無慈悲な対応措置 無慈悲な軍事的措置 無慈悲な軍事的打撃 全般的な戦線で無慈悲に対応 容赦ない攻撃 容赦なく撃墜 容赦なく処罰 容赦ない軍事的措置 全般的前線での容赦ない粉砕 際限の無い報復打撃 より恐ろしい懲罰 全戦線での全面的軍事打撃行動 再侵略戦争の砲声 報復聖戦 未公開で最先端の世界的な打撃力量と安全保衛手段がある この世の誰も体験したことのない最も厳しい懲罰 先軍の銃でことごとく一掃 本当の戦争を見せる 絶対に無事ではなくなる 無慈悲な物理的な力を行使 無慈悲な軍事的対応打撃 無慈悲な軍事攻撃 無慈悲な電撃作戦 無慈悲な稲妻 ← new!!
何らかの理由で標準ライブラリだけでXMLパースさなきゃならんときはどうするんだ
lexとyacc使うだろ
171 :
デフォルトの名無しさん :2013/03/28(木) 13:33:56.65
そもそもXMLパースにRegexなんて使うの? ああいう階層構造ってRegex向いてないだろ。
●Regular Expressionの使用環境 PHP5 ●検索か置換か? 置換 ●説明 Javaのコメント・文字列を抽出してタグで囲みたいです。 /**/, "", '' が入れ子になってる場合に外側だけ適応するのができません 失敗例 <ダブル>"これは<シングル>'ペン'</シングル>です"</ダブル> 成功例 <ダブル>"これは'ペン'です"</ダブル> ●対象データ() /* "hello" 'world' */ String var="これは'ペン'です"; String apos='apopo "/* moge'; ●希望する結果 <コメント>/* "hello" 'world' */</コメント> String var=<ダブル>"これは'ペン'です"</ダブル>; String apos=<シングル>'apopo "/* moge'</シングル>;
/* 〜 */ " 〜 " ' 〜 ' の3つを普通に置換すればいいだけでしょ。入れ子ですらないし。
174 :
172 :2013/03/29(金) 03:53:58.61
いまいちなやり方ですが、目的は自己解決できました。 一端 | で一時的なタグに置換したのちに、もう一度置換してできました。 一時的なタグ /(\/\*.*?\*\/)|(".*?")|('.*?')/ "<ブロック>"."$0"."</ブロック>" もう一度置換(/**/ , '' に分ける) /(<ブロック>\/\*.*?\*\/</ブロック>)/ 置換=> <コメント>...</コメント> /(<ブロック>&apos.*?&apos/</ブロック>)/ 置換=> <シングルクォート>...</シングルクォート>
175 :
172 :2013/03/29(金) 03:57:25.70
>>173 普通にやると 「/* " */ "hello"」の場合「"」でおかしくなっちゃうのですよ
>>175 おかしくならないぞ?最初に /* " */ が置換されるからな。
・・というか最初に↑が置換されるような書き方をすればいいんだがそれが出来てなかったんだろう。
177 :
172 :2013/03/29(金) 04:22:58.58
preg_filter(); でやってみた限りだと下記ののような失敗例になりましたが なぜダメだったのかよくわかりませんね。 <コメント>/* <ダブル>" */</コメント> "</ダブル> "
1個1個別々に、つまり3つの正規表現でやろうとするとそうなる。 1つの正規表現で3つの置換をすれば問題は起きない。 そうすれば置換済みの文字列は消費されて検索対象にならないからね。
179 :
172 :2013/03/29(金) 04:31:10.10
おそらく、/* ... */ が置換された後に「*/」ではなく、 「/*」の次の位置から次の検索・置換が開始されているからだと思いますが、 何か記号が足りないとか?
180 :
172 :2013/03/29(金) 04:44:26.74
1つの正規表現で3つの置換をするというとこんな感じですよね? これで上手くいかなかったのですよ。こちらでケアミスしている可能性も有りますけど。 preg_filter($string, { "/**/", "@", "" }, {"<html>/**/</html>", "<xml>@</xml>", ""} );
>>174 ダブルの中に一個だけダブルが出てきたり、
ダブルの中に何重にもダブルの囲みが出てきたり、
上記が複合したりと。大丈夫なのかな。
182 :
172 :2013/03/29(金) 05:31:41.09
簡単な例「/* " */ "hello"」だと
>>174 で上手くいってます。
>>182 解釈の問題だけど、
abc/*def*/ghi*/jk
のような場合、どう考えるのか。
たぶんそういうのはあんまり気にしないんじゃないかな。 "foo\"bar"とかもきっと気にしていないさそう。(そこまでやる必要はないとかで) ガチでやるなら既存のシンタックスハイライト機能とかを参考にするといいんじゃないかな
つか正規表現のスキルが無いならコーディングでガリガリやればいいだけ。 フラグで中か外かを管理して1文字ずつ判定していけばいい。 正規表現でやる場合は正規表現メモに書いてある(?{ code })を使えば出来る。
>>183 >>172 では入れ子と言っているから、
結果は
abc<コメント>/*def*/</コメント>ghi*/jk
でなくてはならないだろう。
/*1/*2*/3*/ こういう意味の入れ子じゃねーだろw国語力付けろw
テキスト 123456789 正規表現 1*4 2*5 3*6 ↑3つ別々にマッチングさせると3つともマッチするのでマズい。
そこで3つを1つにまとめる。 1*4|2*5|3*6 これなら干渉しあうことは無くなる。この場合は1*4のみマッチ。 置換時に出力するものは(?{ code })を使って変換する。
>>187 だから、入れ子が成立していない時は、前側で閉じる。
>>189 > 入れ子になってる場合に外側だけ適応
これ、優先度は固定じゃないと思うよ
例にはないけど、下記両方を満たしたいと思っていると予想するよ
String var="これは'ペン'です";
→String var=<ダブル>"これは'ペン'です"</ダブル>;
String var='これは"ペン"です';
→String var=<シングル>'これは"ペン"です'</シングル>;
あと、/**/を混ぜた場合も同様に。
>>191 優先度って分岐の最初の1.*4が優先されるって意味?
そうなら優先度は3つとも同じだよ。順番を変えても結果は同じ。
2*5|3*6|1*4 にしてもマッチするのは1*4って意味ね。つかピリオド忘れてた。*じゃなくて.*ね。
194 :
172 :2013/03/29(金) 17:03:28.86
"foo\"bar"とか分からないなー。 これだとダメだった。 /".*?[^(¥)]"/
文字参照NGなのかなこの板。テスト &
NGだった。文字参照もそのまま書き込めるってことだね。逆に便利かも。
💩
198 :
172 :2013/03/29(金) 17:52:02.00
これで出来た。あとは予約語(int, class, switch...)を追加して、 Javaコンパイラでエラーにならないソースを修飾する分には完成しそう。 対象:String foo = "\""; 正規表現:".*?[^\\\]"
正規表現の知識が限りなく0に近いようだから無理して正規表現を使わないほうがいいよ。 というか丸投げしに来るのはやめてくれ。
初心者最高!
>>192 そりゃそうでしたごめんなさい。
>>194 その辺、考慮するんだ。てっきりしないものとばかり。
/*
var = "コメントを閉じるときには */ と書きます";
*/
202 :
172 :2013/03/29(金) 20:54:59.66
>>201 その場合JavaとかPHPだとコンパイラがエラーを出す構文だから
1つ目の*/でブロックを閉じちゃって良いのですよ。
<コメント>/*
var = "コメントを閉じるときには */</コメント> と書きます";
*/
っと本に書いてあったことをそのままコピペして自慢w
嫉妬深い男だな。敗者は去ったほうがいい
なんというか既に答えが書かれているのでもう教えることがない。 まだ出来ないというのなら勉強して出直してきなさいという感じ。
206 :
172 :2013/03/30(土) 00:13:07.87
全部自己解決したやん。結局何も教えてもらってないよ。
ただ知識を自慢したいだけなんよ
対象:String foo = "\\"; こうしただけで詰むけど解決おめでとう。
IDが出ないと自演とか妨害とかやり放題だな。
>>209 お前もやっていいんだぜ。
っていうか、IDがでるほうがやりやすいんだがw
俺みたいに回線とかプロバイダとか
レンタルサーバー(プロキシとして使える)とか
複数持っていると同時に複数のIDを使えるから
違う人だところっと騙される。
>>210 そうそう、強制IDの板だと妄想で自演認定する奴がかなり減るから自演もスムーズに進む
単発IDだとまだ妄想厨が湧くけど複数IDだと全然湧かないんだよね
どんだけID信仰してるんだよw
逆に素人はいちいちID変えないから板内なら0時まで粘着し放題
自動巡回でそのID探すのに正規表現が使える
というわけで俺もID導入賛成だ
正規表現いらないじゃん
正規表現使ったほうが早いだろ 使わなくてもやろうと思えばできるって話を持ち出すなら正規表現そのものが不要(ry
正規表現はいらない このスレも不要
じゃあ性器表現再開でいいね?シコシコッうっ
・・・・・・
正規表現でオナニー表現できる?
(シコ)+ぴゅっ
ニ3()
下ネタしかねえのかよ
A: AYAとかAYUっていい女だよな。 B: どこが? A: (.Y.)
w{5}
1919072
しこるかねるか
スレ自体不要と思うなら見なけりゃいいと思うんだが マゾか?マゾなのか? 肛門拡張して欲しいのか?
>>212 は
>>211 にある、
> 自動巡回でそのID探すのに正規表現が使える
のことを言ってるんじゃないの?
>>213 がどう考えてそういったかは分からんが
この程度の正規表現じゃあ、まだまだ俺を表現しきれねえぜっっっ!
特定の文字が含まれる行のみ消す場合の正規表現教えて下さい
例
222 デフォルトの名無しさん [sage] 2013/03/30(土) 23:38:59.05
>>220 チンカスは黙ってろ
224 デフォルトの名無しさん [sage] 2013/03/30(土) 23:48:29.44
1919072
225 デフォルトの名無しさん [sage] 2013/03/30(土) 23:54:23.54
しこるかねるか
デフォルトの名無しさん が含まれる行のみ削除する
俺のレスばっかり選ぶなよ
>>229 環境書いてないからその辺も含めてなのかな。
:v/デフォルトの名無しさん/d
でいいとおもうよ
●Regular Expressionの使用環境 秀丸 8.2.1 ●検索か置換か? 置換 ●説明 二つ目のTab以降を削除したいです。 ●対象データ 100 こくご えいご 100 20 固定 共通 シャカイ スウガク 100 10 ランダム (データの間の空白は全部Tabです) ●希望する結果 100 こくご 共通 すうがく 下の正規表現で試してみました。 ^(.*)?\t(.*)?\t[あ-ん ア-ン].* \1\t\2 (.*)?\t(.*)?\tでTabまでの最短マッチ(のつもり)二つで、えいご、スウガクまでを指定しています。 3つめのカラムの1文字目がひらがなとカタカナなので、[あ-ん ア-ン]で指定しているのですが、 後ろの"ランダム"がマッチしてしまい、2行目が下のような結果になってしまいます。 100 こくご 共通 シャカイ スウガク 100 10 やり方教えて貰えればうれしいです。 よろしくお願いします。
234 :
デフォルトの名無しさん :2013/04/05(金) 18:32:01.77
1行目でこくご、2行目でスウガクを抽出というのが意味不明だがそれはおいておいて スウガクがすうがくにかわるわけがないがそれもおいておいて 最短マッチを指定するのは量指定子の直後な 以下は余談だが多分鬼車だろうから 平仮名: \p{Hiragana} 片仮名: \p{Katakana} が使える
>>233 ・対象データのタブ文字が書き込み時に消えててスペースとタブが区別できない・・・混在してるなら、だけど
・「共通 シャカイ スウガク」のデータは「〜以降削除」では「共通 すうがく」どころか「共通 スウガク」にもならない
・最短マッチの量指定子は「*?」であって「(××*)?」では無いと思うし、マニュアル見ても「*?」になってるぽい
N個目のカラムとかにマッチさせたいなら、セパレータを含まない文字集合を使うべきだと思う
「^([^\t\r\n]*\t[^\t\r\n]*)\t.*$」→「\1」とかだと思うけど、秀丸持ってないし知らん(なら答えるな?)
>>234 HmJre.dllというJRE32.DLLのカスタム版らしい
これは簡単では。確実ぽいのはこれ。結果と違うが、「共通 すうがく」はどこだ? ^([^\t]*\t[^\t]*)\t.*?$ \1
>>234-236 みなさんレスありがとうございます。
私の記載間違いで皆さんを混乱させてしまい大変申し訳ありませんでした!正しくは下記でした。。
●希望する結果
100 こくご
共通 シャカイ
>>234 鬼車のエンジンだとそういったことが出来るのですね、勉強になりました。
>>235 ,236
お二方のやり方で無事出来ました。
無事出来てうれしいのですが、回答例の正規表現の動きがよく分からないので、( ^([^\tが何を表してるかとかその時点でちんぷんかんぷんで。。
正規表現の本さっき注文してみました。これで勉強して皆さん回答例と照らし合わせて動きを勉強してみようと思います。
最短マッチについても間違っていたようで勉強になりました。
どうもありがとうございます。
どうでも良いわ バイバ
年末に買ったキーボード「BSKBC02BKF」 いくつかのキーが認識されたりされなかったりするようになった。 耐久性500万回と言っても認識されないんじゃ無意味。 半年保証期間内だったけどめんどくさいので新調。 今度はロジクールの新製品(*日本語版)「K120」 さらに上をいく耐久性1000万回、3年保証。 さあどうでしょうか・・・
リアフォ最強伝説
スレチ?
因果応報における多義性と有効性、相互補完性および限界設定についての一提言じゃな
244 :
デフォルトの名無しさん :2013/04/07(日) 13:44:47.08
敵の攻撃部隊の中でも遊撃手が厄介なので先に抽出して優先的に叩いておきたいのですが、 遊撃手のみを抽出する正規表現はどう書けばいいのでしょうか?
=~ s/^(ジェミニ)$|^.*$/$1/g;
中学の頃 大村君が苗字音読みでダイソンって呼ばれてて それが元で梅村君はバイソン 若村君はジャクソン 下村君はアンダーソンとみんなかっこいいあだ名がついたのに 津村君だけあだ名がバスロマンだったのはイジメに近いし 今思うとバスロマンはツムラじゃなくてアース製薬
247 :
デフォルトの名無しさん :2013/04/07(日) 23:28:09.34
バスクリンは津村だっけ
>>246 スレチでコピペ乙だがとりあえずワロタw
めがさわ君がいて、ぎがさわって奴はいないよな、と言った相手が寺沢君だった、 という奴もあるなw
戦後レジームの被加虐性における間断なき重複性の効用じゃな?
市街戦における遊撃手しか抽出できないけどいいの? って突っ込むかどうか悩んだ上にそっとしておいたというのに
^.*\d{2}[a-zA-Z]?\.gif という表現がマッチする文字列があるとします。 例えば、img01A.gifです。 この文字列から、頭のゼロを外した数字を抜き出したいです。 上の例では、「1」を抜き出したいです。 「01」を抜き出すのでよければ、 ^.*(\d{2})[a-zA-Z]?\.gif として、「$1」で受ければいいですが、 頭のゼロをスマートに取り除く方法を模索しています。 よろしくお願いします。有難うございます。
254 :
デフォルトの名無しさん :2013/04/10(水) 16:06:19.36
.*?0?(\d{1,2})[a-zA-Z]?\.gif かなぁテストはしてないけど
>>254 0?(\d{1,2})
の部分は、「数字二桁でなければならない」でお願いします・・・。
img001A.gif
img999.gif
img123A.gif
はNGとしたいです。
000001A.gif
99918.gif
もNGです。
00A.gif
もNGです。
01A.gif
はOKです。
01.gif
はOKです。
256 :
デフォルトの名無しさん :2013/04/10(水) 16:52:17.14
自分で考える気があればできると思うんだけどね 処理系も提示しないから使えないとか後出ししても知らねえわ (\D*?)(?:0)?((?<=0)\d|[1-9]\d)[a-zA-Z]?\.gif
>>256 処理系とはなんでしょうか・・・.Net4.0を使っておりますが、コンパイルのことですか?
(\D*?)(?:0)?((?<=0)\d|[1-9]\d)[a-zA-Z]?\.gif
なるほど、「又は」で区切って前方チェックするということですか!
ありがとうございます!!
258 :
デフォルトの名無しさん :2013/04/10(水) 18:36:36.21
1も読めないような知障はやはり放置しておいたほうがよかったね 正直すまんかった
すみません、反省します。また教えてくだしあ。
まぁ数字二桁でとって、0とればいいだけなんだけどね
>>260 ですね・・・いろいろ試しましたが諦めて TrimStart使うことにしました。ヘタレですみません。
Regex regex = new System.Text.RegularExpressions.Regex(
@"(?<number>\d{1,}[a-zA-Z]?)\.gif$",
RegexOptions.IgnoreCase);
do{ Console.WriteLine("str=?");str = Console.ReadLine();
Console.WriteLine(regex.Match(str).Groups["number"].Value.TrimStart('0'));
} while (str != "999");
^(.*\D)?(?|0([0-9])|([0-9]{2}))[A-Za-z]?\.gif$
生きる意味など無いのである 地球が46億年前にでき、30億年前に原始生命が誕生した 多細胞生物→動物→哺乳類→霊長類→ヒト ナメクジに生きる意味など無いであろう? 人間という種にも別に生きる意味など無いのだよ 気が付いたら「生きる意味」とかアホな世迷い言を考える種になっていた 「意味」とはそもそも、思考する際に考えのよりどころにするもの だが、ヒトが生きていくために、合理的で生きていきやすい 社会・人生にするために、「意味」を作ることは大切なんだ 「意味」を理解したうえで…
あ
>>261 二桁に限定することもあきらめたのか。
まぁ、いいんでない。
その後の処理で数値として処理したそうな雰囲気がうっすらあるし。
でも、そうする予定かつその言語なら、その場面でTrimStartを使うのはウツケモノだなぁ。
やっぱ正規表現で何でもやろうとするなって主張したくなるわ。
長時間頭を悩ませた正規表現がスクリプトだと数行で簡単に書けたりすると微妙な気分になるね。 正規表現だけでやる場合も数行に分けるとぐっと簡単になる。
何でもSQLでやりたがる人も居るよなぁ。
日の出から日暮れまで殴り合ったらええねん
>>265 List<MyClass>で、IComperableのSort規則を作るとき、
やっぱりストリングのnumberをintにパースして比較せざるを得なかったので。
文字Sortだと、
1.gif
11.gif
2.gif
っていうよくあるWindowsフォルダの自動並べ替え規則になってしまうので・・・。
すみません、スレチな話題で。
\d{1,} これは、 \d*[1-9]\d*にしておきました。 0 00 は不正なファイル名としてマホカンタしたかったので。
>>269 え、二桁であることが前提と、理由がそれなら0をとらずにソートすればよくね
少し静かにしてくれないかい?
断る
176 まじで?
正規表現「鬼車」作者氏の個人サイトに「下山国鉄総裁自殺説」が掲載されているが、
氏に再検証して貰うための情報を示そうにも、サイトは書込み禁止になっているようなの
で、ここをお借りします。いずれ、「鬼車」氏の目に留まるかも知れない事を期待します。
・国鉄下山総裁は他殺であり、自殺は断じてあり得ない。キーワードは、「CIA special
technical team in Japan」
・ダニエル・エルズバーグが New York Times に持ち込んだ通称「ペンタゴン・ペーパー
ズ」自体は米国政府により2011年6月に機密指定が解除され、現在「米国立公文書館」の
サイトでも閲覧できるが、(
http://www.archives.gov/research/pentagon-papers/ )こ
の中には、肝心の付属資料は含まれていない。グラベル米国上院議員が独自に入手した資
料を含めた四巻本(全7000頁)がすでに40年も前に米国で公刊されているが、この中に
「下山事件」を含め、戦後日本で起きた奇怪な事件を解くカギがあるように見える。
殺害の実行犯人の個人名までは、まだ特定されていないが、
・組織名:日本駐在CIA特殊工作班
・統括責任者氏名: エドワード・ランズデール(米国空軍大佐)
までは、すでに暴露されている。この「CIA特殊工作班」自身がまとめた1954〜1955年
にベトナムで実行した謀略活動の記録が、上記グラベル上院議員がまとめた著書に収録
されていて、現在ネットでも読めます。
https://www.mtholyoke.edu/acad/intrel/pentagon/doc95.htm の中の d. October 1954 の項目にあります。ベトナムで鉄道破壊、ダム・港湾破壊、
流言蜚語などの諜報活動を行うために、1954年7月に日本に駐屯していた「CIA special
technical team in Japan」をベトナムに呼んだという記載。
・なお、下山総裁を殺害直前に三越百貨店に誘き出した韓国人情報屋を米軍小倉刑務所で
取り調べた布施健東京地検検事の検事調書が、直後に強奪され失われましたが、それが現
在同じ「米国立公文書館」に保存されているようですが、ネットには公開されていないの
か、見つけ出せないでいます。知っている方がいたら、教えてください。
米国立公文書館くらい行けよ
こういうのが一番うざいな。くだらんことに必死になってる暇があったらボランティアでもしてこいボケ。
何行以上かのレスはあぼーんとかない?
改行文字を正規表現できるなら出来そうだけど思い浮かばんねw
改行文字は正規表現できるけど、アプリケーションが改行含めて処理するかどうかが問題だわな そもそも正規表現NGワード搭載の専用ブラウザがあるのかすら知らんけど
おまえらの一番好きな正規表現エンジンは何ですか
ここで面白いレスが一発↓
生きる意味など無いのである 地球が46億年前にでき、30億年前に原始生命が誕生した 多細胞生物→動物→哺乳類→霊長類→ヒト ナメクジに生きる意味など無いであろう? 人間という種にも別に生きる意味など無いのだよ 気が付いたら「生きる意味」とかアホな世迷い言を考える種になっていた 「意味」とはそもそも、思考する際に考えのよりどころにするもの だが、ヒトが生きていくために、合理的で生きていきやすい 社会・人生にするために、「意味」を作ることは大切なんだ 「意味」を理解したうえで…
>>280 Jane系はNGexがあるよ
改行は<br>とすれば良い
V2C⊃Jane
経済成長をドラクエで例えると、団塊のじじい共の時代は勇者レベルが 10〜15位のとき。はがねのつるぎとか買う時代。レベル上げ(経済成長)が 楽しくて仕方無い時期。これからのストーリー展開も未知であり楽しみ。 俺らは、終わったドラクエのレベル上げてるみたいなもん。 ものごころついた頃には天空の剣とか何でもそろってる。 お金稼いでも買うものが無い。全フィールド全てやりつくされてる。 はっきり言ってつまらねえ。やることと言ったら、取り忘れた 黄金の爪を取りに行く(過疎地に道路を通す)とかそんなのばっか。 退屈。今の連中に、じじいばばあと同じモチベーションを持てというのは酷だ。
288 :
デフォルトの名無しさん :2013/05/23(木) 17:53:57.80
Googleの検索結果のURLから検索ワードだけを抜きたいんだけどどうしたらいいですか? 検索ワードの後にまだ何か付いていたり、何も付いてなかったりするので困っています。 (前略)&q=検索ワード&(以下略) (前略)&q=検索ワード
環境は?
近くに幹線道路がありますがそれ以外は森と田端が広がってます。
田端は拡がらないと思う。
UTF-8のエンコードされたままのワードでいいのかな?
293 :
デフォルトの名無しさん :2013/05/23(木) 19:11:46.74
294 :
デフォルトの名無しさん :2013/05/23(木) 20:40:02.85
>>289 ,
>>292 ,
>>293 環境はPerlです。
エンコードってどっちでしたっけ?
%16進?とかってやつです。
人間がそのまま読めないやつです。
クエリではなくApacheのログにあるリファラからの抽出です。
295 :
デフォルトの名無しさん :2013/05/23(木) 21:18:45.51
だめだこりゃ
その辺に転がってるアクセス解析のCGIでも拾って読めばすみそうだが
正規表現を覚えるための質問じゃなくて丸投げして作ってもらうための質問だな。 カネ払って業者に作ってもらったら?
$str=~/&q=.*/ で調べて、見つからなかったら $str=~/&q=.*&/ で調べれば済むだろ
perlなら正規表現を使わなくても文字列操作で出来るでしょ? それも出来ないならまずスキルを磨くべき。 自分に甘すぎだろjk
このスレ案外まともな奴が多いな 俺は正規表現で質問がきたもんだから正規表現で考えてしまった
正規表現は目的じゃなくて手段だから 例えば「\」を「"」に置換したい場合に、普通の文字列扱いで置換できるソフトならその方が断然楽だし
302 :
デフォルトの名無しさん :2013/05/25(土) 16:53:07.08
格闘ゲームのコマンド入力は正規表現で処理するのがいいってどこかで聞いたんだけど、具体的にどうすんだ?
正規表現は処理が遅い。普通に判定したほうがいいよ。
304 :
デフォルトの名無しさん :2013/05/25(土) 17:45:06.46
substrの方が早いとは言うけどね 見通しは悪くなりがちよね
オートマトンを処理するエンジン次第なのに「遅い」とか決めつける根拠が不明。 「普通に」って、具体的にどういう手法を使うのが「普通」なわけ? 一般的に「これが普通」って手法は無いと思うけど。
レギュラーくんは黙ってなよ、馬鹿なんだから。
おまえらのアナルはそんなもんなのか?
>>302 文字の各ビットに各キーを割り当てて1フレームに一文字生成して、
[\u0001]+[\u0003\u0000]{0,10}[\u0002]+、とかか?
判定処理のバグ探しが減っても、コマンド定義するのがダルくなるな
●Regular Expressionの使用環境 PH5 ●検索か置換か? 置換 ●説明 行の先頭に+がついてるものを<li></li>で囲んで +が連続で複数行についている場合はそれをまとめて<ul></ul>で囲みたい ●対象データ +あいうえお +かきくけこ +さしすせそ +たちつてと ●希望する結果 <ul> <li>あいうえお</li> <li>かきくけこ</li> <li>さしすせそ</li> </ul> <ul> <li>たちつてと</li> </ul>
311 :
310 :2013/05/27(月) 16:50:15.50
↑よろしくお願いします。 PH5じゃなくて、PHP5でした。 わかりやすくなるのであれば、preg_replaceを数回使ってもらっても大丈夫です。
あのさぁ、プログラミングの知識があればこんなん出来るだろ?正規表現なんて使わなくてもさ。 ほとんどスレ違いだぞ。
314 :
デフォルトの名無しさん :2013/05/27(月) 18:30:26.37
cmsのソース眺めれば〜?
315 :
310 :2013/05/28(火) 02:27:41.80
pukiwikiのソースを参考にしてなんとか解決できました 結局、正規表現は使わずじまいでした...
せめて最低限のスキルを身に付けろよ、分からないとこ全部他人にやらせてたら上達しないし こっちは無駄手間だし誰も得しないだろ。本当に分からないときだけ分からないことだけ質問しろ。
何でもかんでも正規表現でやろうとするとPerlerみたいな基地害になるぞ。
318 :
デフォルトの名無しさん :2013/05/28(火) 15:22:26.13
この手のゆとりに何言っても無駄だよ
まあこのスレだけで質問が済んだのは良かったじゃん 本当にゆとりで、マルチポストでPHPやperlやC++やシェル等いっぱい同じ質問が投げられてたらと思うと
前にいたなぁ、そんなのが。
信じようが信じまいが私はPerler
パッパラPerler
ここの人にとって正規表現ソフトの主流って何?
なんだかんだでPerlは強いな
325 :
デフォルトの名無しさん :2013/05/29(水) 15:10:00.51
PCREと鬼車の2大巨頭だろ
遊び目当ての正規表現ならProxomitronが至高。 ただ致命的なバグのせいで実用にぎりぎり耐えなかった。
>>323 普通埋め込みで使うからな…SQLをどの言語上で使うか聞かれてる感じ。
単体で使うのはgrep、sedが多いがそれは単に他の用途に使ってないというだけだろう。
>>327 っていうかその文脈ではPosix/Perl系正規表現言語を使ってますって言えばいいんじゃないのか?
それ以外の正規表現で実用されてるのがどれだけ有るかは全く知らんけど。
BNFは正規表現になるんだっけか?
意味のない質問してくる構ってチャン相手に何やってんの。
>>328 BNFでは表現できるが、正規言語では表現できない、というものはある。
簡単で有名なものでは、カッコの対応ができているか否かの判定。
>>330 正規表現ってだけでは限定できないよ。
鬼車系、Perl、PCREは再帰表現ができるから入れ子の判定が可能。
ただ、マッチの判定だけだから、キャプチャが言語の力を借りな
いと処理できない。
>>333 >たまにアクセス要求が勝手に却下されるバグがあるの。
まじすか
使っているけど気づかなかった
>>334 画像が多いページを読み込むと、読み込みに失敗して表示されない画像があったり、
リロードしてもいつまでも真っ白のまま読み込まれなかったりするよ。
自分はWEBサイトを丸ごと保存するときにリンクを絶対リンクから相対リンクに置換するために
使ってたんだけどバグのせいで保存されないページが出てしまって使うのを断念しました。
昔、語尾をにゃんに変えるproxyとか流行ったな。
337 :
デフォルトの名無しさん :2013/06/01(土) 21:13:54.59
なつかしいな。 関西弁にするやつとかもあったな。
>>326 割と普通のPerl系正規表現だが、Privoxyも正規表現使えるぞ。
ヘッダやURLに対しても正規表現で置換ができたりして面白い。
パッチ版もGUIが弱いからProxomitronも併用してるが、正規表現でゴリゴリやるならこっちのほうが強いかも
>>338 当時はPrivoxyは落ちるって噂があって自分は触らなかった。今はどうなのか知らないけどね。
WEBサイトの保存の件はローカルにダウンロードしてから置換するようにしたからプロキシはもう要らないかな。
ここは超初心者がどうすればいいか聞いたりすると 教えて君は死ね、と返ってくるスレでしょうか? 読み上げソフトの正規表現についてググッたり、勉強してるのですが 中々うまくいかないもので
自分で頑張ろうとしてる人なら誰でもウエルカムだよ。スレに丸投げしにくるクレクレはNGだけどね。
なるべく教えて君にならないような質問を心掛けます
「それ正規表現でやらないほうが良くね?」って回答は結構多いよな。 いや俺もよくやるけどw
最近回答してるのって俺とおまえだけじゃね。
(*/∀\*)イヤン
アッー
俺とおまえと
349 :
デフォルトの名無しさん :2013/06/05(水) 20:48:50.33
俺がお前でお前が俺で
>>310 もう見てないと思うけど
正規表現でやるとこんな感じ
1回目
^\+(.*)
<li>\1</li>
2回目
((^<li>.*</li>\n)+)
<ul>\n\1</ul>\n
それ
>>310 が望んでるのと違う結果になるんじゃ。
>+が連続で複数行についている場合はそれをまとめて<ul></ul>で囲みたい だから単一行の場合は・・?
>>352 1、「行の先頭に+がついてるものを<li></li>で囲んで」
2、「+が連続で複数行についている場合はそれをまとめて」
3、「<ul></ul>で囲みたい」
単一行の部分は1のあと直接3に進むんでしょ
希望する結果からしてもそうだし、HTMLやWiki系記法的にもそうだろうし
>>353 あー、悪い。間違ってたのは俺のほうだった。日本語の勉強してくる。
355 :
デフォルトの名無しさん :2013/06/07(金) 01:37:23.88
ただ叩きたいだけのメンタルだとこうして恥掻くんだよね(笑)
ごめんねごめんねー(笑)
いや、叩くつもりなんか毛頭無いよ。なんでそう受け取るのかな。 精神病だと攻撃されたって思い込みやすいらしいから気をつけて。
358 :
デフォルトの名無しさん :2013/06/07(金) 04:19:04.83
どして質問者だと思ったんだろうね(笑)
「質問者だと思ってレスしている」と思う心理もまた不安定な人が陥りがちな心理であり云々
まぁいい加減にしとけ
>>355-358
360 :
デフォルトの名無しさん :2013/06/07(金) 16:09:15.95
いやいや 攻撃されたなどというのはその質問者だと仮定してないと出てこない表現だから 357 :デフォルトの名無しさん [↓] :2013/06/07(金) 02:43:51.00 いや、叩くつもりなんか毛頭無いよ。なんでそう受け取るのかな。 精神病だと攻撃されたって思い込みやすいらしいから気をつけて。
↑何を言ってるのかまったく分からん
気持ち悪い
363 :
デフォルトの名無しさん :2013/06/07(金) 18:04:39.22
最近この板もwebprog並にひどいな
>>360 質問者に同化して被害を訴える心理とかもあるから一概には言えないよ
メンタル不安定の嫌疑は俺含め何重にでも掛けれてキリがないんで
まぁいい加減にしとけ
>>355-362
なんで質問者という単語が出てくるのか理解不能なのだが、
どう考えると
>>358 の書き込みになるの?答えたくないなら別にいいけどさ・・
なるほど。
368 :
デフォルトの名無しさん :2013/06/08(土) 09:42:39.55
366だけが正解 あとは産廃以下
お前もな
370 :
デフォルトの名無しさん :2013/06/12(水) 16:49:09.98
●Regular Expressionの使用環境 ActivePerl5.8 ●検索か置換か? 検索 ●説明 連続する数を検索したい(1965から2011までの数) ●対象データ(配列内に格納) 1952 1965 1986 2012 1972 2011 ・ ・ ●希望する結果(配列の各要素を正規表現で検索して、マッチする要素だけ抽出) 1965 1986 1972 2011 ・ ・ 配列の各要素が1955から2011までの数の場合にマッチする正規表現を教えてください
371 :
デフォルトの名無しさん :2013/06/12(水) 17:02:53.44
どうして正規表現を使おうと思ったのか5行程度で
丸投げクンの鑑みたいな奴だな。消えろ。
373 :
デフォルトの名無しさん :2013/06/12(水) 17:34:23.25
>>371 システムの検索関数が正規表現を渡して検索するようになってるので・・
こっちで配列を受け取って比較演算子で判定できれば話は早いんですけどね・・
数字比較系は、正直やめとけレベルだからなあ…… いや俺もやったことあるけどさ、4桁だったけど相当ひどかった記憶。
4桁じゃなくて3桁だったけど、まあいいやw
暇つぶし (?:19(?:6[5-9]|[7-9][0-9])|20(?:0[0-9]|1[01]))
377 :
デフォルトの名無しさん :2013/06/12(水) 20:01:28.96
>>376 どうもありがとうございます
その正規表現で出来ました
>>374 ですよね、連続数を正規表現で検索なんて普通はないですよね
貰ったWordファイルから人名を検索する為に正規表現を使ってみました 例:遠山、高山、山下、山崎、山川、山中、山田、山本、中山、平山、など山と付く名前から 山(田|中|本) とすれば、山田、山中、山本だけをピックアップすることが出来るのは解ったのですが 遠山、高山、山崎、だけを探したい場合 (遠|高)山(崎) としたのですがダメでした さすがにこんな単純じゃないですよね?何が足りないんでしょう? あ、足りないのはお前の頭だ、というのはご勘弁ください
それで引っかかるのは 遠山崎 と 高山崎。 ぶっちゃけ、素直に○山さんと 山○さんで分けて検索したほうが楽だと思う
遠|高(山)|崎でいけました、間違ってるかもしれませんが ネスト、勉強になります が、()の使い所が沢山あるんですね、訳がわかりません
>>379 が言ってる「分けて」って意味は
((遠|高)山|山崎)
だと思うよ。
括弧には後で利用するためのキャプチャの意味とグループ化の
2つの意味がある。グループ化の意味を強調したいなら、(?: )
があるよ。
確かwordの正規表現はちょっと変わってたはず。使えるメタ文字が少なかったり。 と言っても俺が知ってるwordは2000年ころのだから今とは違うかも。
Javaの正規表現で初歩的な質問なんですが result = m.replaceFirst("new"); で最初の文字は置き換えれますが 2回目やっても次へ移動してません。 2つめも置き換えるにはどうしたらよいでしょうか?
m.replaceFirst ↓ m.replaceAll
一気に全部でなくて 命令のたびに2つめ、3つめ… というようなことはできないんでしょうか?
似たようなケースのサンプルコードが appendReplacement() のAPI解説に
うーん、求める結果になるコードは作れるだろうけど、最善のコードじゃなかったら悪いから書きにくいな。 自分が貼ったコードよりシンプルで簡単なコードの書き方があると地味にショックなんだよねぇ。
>>389 それも自分の勉強になるではないか。
顔も名前も見えないのだから、恥も外聞も無いし。
●要望 5桁の英数字の文字列データから、各桁が M W w のいずれかのみ、で構成されている文字列を検索する MwwWM wwWMw WWWMM wMWww などがヒットするようにする [MWw][MWw][MWw][MWw][MWw]と書けば良いとは思いますが、[MWw]{5}と記述しても同様の結果は得られるのでしょうか? 10桁とか12桁でも考えているので、コンパクトにまとめたいのです {}は直前の繰り返しだから MMMMM WWWWW wwwww としか一致しないのでしょうか? 一日でヒットするデータが得られるとは限らないものなので、簡単に検証できないのです よろしくです
>>391 簡単な正規表現ならこういうとこで実験出来るよ。
正規表現テスター (Flash ActionScript3.0)
http://1st.geocities.jp/neeetest/as3_regexp.html 検索表現 ⇒ [MWw]{5}
置換表現 ⇒ Hit!
対象文字列 ⇒ MwwWM
フラグ ⇒ g にチェックを入れる
と入力して「テスト」ボタンを押してみ。
ちなみにこのテスターでは改行にマッチさせるには \r を使うんだけど、
テストした正規表現を実際に使うときには \r を \n や \r\n に書き換える必要があるかも。
1改行2 にマッチさせるにはテスターでは 1\r2 と書くが、実用する際には
1\r\n2 や、1\n2 と書かないと動かないケースがある。
393 :
391 :2013/06/26(水) 12:36:00.06
>>392 便利なページですね!
早速検証に使用することにします
ありがとうです
>>391 なかなかいい着眼点だとは思う。
でも、たぶん \d{4} が、ぞろ目にしかマッチしないのかなと不安にはなっていなそう。
正規表現の何が分からないの?ここは仕事をネットにやらせてアウトソーシングとか言うスレじゃないよ。
また性器表現始めちゃおっかな〜
「URL 正規表現」でググれば色々出てくる。 一度に全部やらずにURLの検索と ケツの拡張子のチェックに分ければいいよ
では質問の仕方を変えます ((http|https):\/\/[0-9a-zA-Z\/\._]+[^(\.png)][^(\.jpg)][^(\.gif)]) 間違っているのが後ろの指定方法なのはわかっているのでさが、○○で終わらない というのを複数指定するほうほうがよくわかりません。 正規表現には「|」はありますが、「&」という記法がないので…
(?!)
^(?!.*a$).*$ ↑aで終わらない文字列にマッチする正規表現。 aの代わりに (?:\.jpg|\.gif) と書けば.jpgや.gifで終わらない、という意味になる。 最後の .*$ は (http|https):\/\/[0-9a-zA-Z\/\._]+ に書き換える。 >「&」という記法がない 2回に分けてマッチングさせれば論理積になる。 1回目でURL文字かどうかのチェック、2回目で末尾が画像かチェック、など。
レジェックスって気をしっかり保って見ないと 何か邪悪な呪文を読んでる気分になって発狂しそうになる
カッコの入れ子が何重にもなってるとちょっとイヤw
Janeで、読み上げソフトを使って聞いているんですけど コピーをミスって、投稿者の行を読み上げるのを防ぐ為に正規表現の置き換え、を使おうと思ったんですが 解らない部分を教えて頂けませんでしょうか? \d{1,3}\s名前:各板ごとの投稿者名(\[sage\]|\[age\]|\[\])\s投稿日:〜〜〜〜〜 この『各板ごとの投稿者名』、は沢山ありますよね? 文字数は不定、使われている文字種も不定、正規表現で表すためにはどう記述するのでしょうか? 『あらゆる文字数、文字列』という表現はあるんでしょうか?
自己解決 .* で良かったっぽいですね
\d{1,3}\s名前:.*?(\[sage\]|\[age\]|\[\])\s投稿日:〜〜〜〜〜 ですか? 最短一致、最短マッチの意味をググってます、分かるようで分からないような 仮に最短マッチにしないと、どういう不都合が起きますか? 次の括弧までの文字列しかマッチしないということなのかな?
>>409 ReplaceStr.txtで置き換えを考えてるのなら、置換対象を指定すれば
複雑な指定をしなくても、各要素ごとに別々に別指定できるよ
また、単に表示を消すだけならスキンファイルRes.htmlやNewRes.htmlを
<dt><NUMBER/><dd><MESSAGE/><br><br></dd><hr>
で作成すれば、レス番号しか出なくなる
>>410 すみません、読み上げソフトを触って初めて正規表現なる存在を知ったほど、超絶初心者なので
分かるのはだいぶ先の事になると思います
>>411 となるともしかしたらソフトウェア板のほうが適切かもしれない
ああもう訳が分からない あいうえおあいうえおあいうえお という「あいうえお」の繰り返し文字があったら 1番最後の「うえ」だけ一致させる方法と 2番目の「うえ」だけ一致させる方法が解らない それぞれどういう方法があるんでしょうか? すみません教えて下さい
正規表現の置き換えで使える記号、ルールって $1 $2 ぐらいしか無いのかな?
●Regular Expressionの使用環境 sakura editor ●検索か置換か? 置換 ●説明 xmlのtaxiwaypath要素のなかに type="TAXI"と centerLineLighted="FALSE"が存在するときに、 他の属性を書き換えずにcenterLineLighted="TRUE"に書き換えたいです ●対象データ <TaxiwayPath type="TAXI" … centerLineLighted="FALSE" … /> ●希望する結果 <TaxiwayPath type="TAXI" … centerLineLighted="TRUE" … /> …は省略していると言う意味です
検索 (<TaxiwayPath(?=\s)(?=[^<>]*\stype\s*=\s*(?:(["'])\s*TAXI\s*\2|TAXI)(?=\s|/?>)) [^<>]*\scenterLineLighted\s*=\s*)(?:(["'])\s*FALSE\s*\3|FALSE)(?=\s|/?>) 置換 \1"TRUE" 検索は長いから2行に分けたから繋げて。 置換は"TRUE"の後ろに半角スペース1つを入れること。 type = TAXI type = 'TAXI' type = TAXI2 ←属性値に余計なものが付いてるときはマッチさせない などにも無駄に対応しといた。
>>420 ありがとうございます
しかし実行してもマッチしませんでした
tabと改行なしで例文を検索したところマッチしたのでおそらく改行が原因と思われます
tabは整形で削除できたのですが、改行は修正しきれませんでした
出来れば改行に対応できないでしょうか
>>421 \s -> [\s\r\n] or (?:\s|[\r\n])
>>421 サクラエディタでは現在のところ複数行にまたがる検索はできないと思います。
正規表現ライブラリの問題ではなくサクラエディタ自体の仕様のようです。
(自分も以前この問題にぶつかって結局別のエディタを使いました)
で、以下は若干スレ違いのレスになってしまいますが。
改行コード自体の検索・置換はできるので、ありきたりですが
・改行コードを全部適当な他とぶつからない文字にいったん置換
・本来やりたい置換(
>>420 ?)
・改行コードを元に戻す
あとサクラエディタのFAQサイトには以下のような回避策の記述があります。
http://sakura.qp.land.to/?FAQ%2F2
>>422 ありがとうございます
それは\sを [\s\r\n] または (?:\s|[\r\n]) に置き換えろということでしょうか
やってみたけど出来ませんでした
>>423 ありがとうございます
エディタをotbeditに変え、改行コードを漢字の「改」の字に置換えました(半角でパッと思いつかなかったので…)、
エディタ変えたら置き換える必要ないのかもしれないけど、
ちょっと質問がわかりにくかったと思うので置き換えて改めて質問させて頂きます
<TaxiwayPath改type="TAXI"改start="72"改end="49"改width="30.48M"改weightLimit="500000"改
surface="ASPHALT"改drawSurface="FALSE"改drawDetail="FALSE"改centerLine="TRUE"改
centerLineLighted="FALSE"改leftEdge="SOLID"改leftEdgeLighted="TRUE"改rightEdge="SOLID"改rightEdgeLighted="TRUE"改name="83"/>改
行が長すぎるので改行していますが本来は繋がっています
原文ママでこの要素が全文で30000個以上あります
この中で、
type="TAXI"かつcenterLineLighted="FALSE"になっている要素のcenterLineLighted属性の値を
centerLineLighted="TRUE"に置き換えたいです
長文になってしまい申し訳ありませんが、よろしくお願いします
エディタでやろうとするとエディタ特有の制限にぶつかる恐れがあるから
>>392 のテスターみたいな
プログラム言語で直に置換するものでやったほうがいいよ。
>>420 のままで動いたし。
エディタと正規表現って相性が良くないから何かと制約が出てしまうことが多いんだよね。
エディタの内部処理では文末にデータの終端を示す文字が自動的に埋め込まれてたりして、$が本来の
文末にマッチしなかったり、改行に制約が付いたり。秀丸でも改行に制約があったはず。
サクラエディタではperlを使った置換が出来るらしいからそれを使ってもいいかもね。
ごめん、嘘付いた。
>>420 を
>>392 のテスターで動かすには置換のほうの書き換えが必要だった。
× \1"TRUE"
○ $1"TRUE"
検索のほうは2行に分割してるのをそのままコピペで動いた。改行を消して1行に繋げる必要なし。
otbedit用 検索 (<TaxiwayPath(?=\l)(?=(?:[^<>]|\l)*\ltype\l*=\l*(?:(["'])\l*TAXI\l*\2|TAXI)(?=\l|/?>)) (?:[^<>]|\l)*\lcenterLineLighted\l*=\l*)(?:(["'])\l*FALSE\l*\3|FALSE)(?=\l|/?>) 置換 $1"TRUE" 改行にマッチ出来なかったのは [^<>]* が改行文字にマッチしないのを見落としてたからだった。 (?:[^<>]|\l)* に修正して完成。てへぺろ。
>>427 テスター使ってやってみたのですが、やはりできませんでした
環境か設定が悪いのでしょうか
表示画面はこのようになり、変更されていません
フラグもチェックしましたが相変わらずです
http://i.imgur.com/mVM4qwA.jpg それからその2段表記の正規表現の間にスペースは含まれますか?あってもなくても変わらないのでしょうか
2ちゃんの仕様で例文の後ろに半角スペースがついていますが原文にはありません
よろしくお願いします
xmlエディタを使ってxpath指定で変えれば?といいたくなるのをこらえて正規表現で解決するスレ民がマジかっこいい。
>>428 >>427 はotbedit用。それ以外の環境では動かない。
\l ← otbeditにしか無い独自のメタ文字
ちなみにテスターの使い方はそれで合ってる。 テスター用、というか一般的な環境で使えるのも用意しようか、今から作るね。
テスター用(perlなどのプログラム言語で使用可能) (<TaxiwayPath(?=\s)(?=(?:[^<>]|\s)*\stype\s*=\s*(?:(["'])\s*TAXI\s*\2|TAXI)(?=\s|/?>)) (?:[^<>]|\s)*\scenterLineLighted\s*=\s*)(?:(["'])\s*FALSE\s*\3|FALSE)(?=\s|/?>) $1"TRUE" これはotbeditでは動きません。
>>429 >>424 に 「原文ママでこの要素が全文で30000個以上あります」 とあるから
ショボいxmlエディタだと固まる可能性ある。
というか
>>419 の条件だと正規表現でやったほうが早いんじゃね?
type="TAXI"があるかどうかの確認が必要になるし。
ちなみに
>>392 のテスターは前に入力した正規表現を記憶してるから
毎回正規表現をコピペする必要が無い。下手なエディタよりラク。
>>419 です
皆さんどうもありがとうございました
結局正規表現ではうまくいきませんでしたが、専用のツールを使って解決できました
皆様には大変感謝しています
あー、原因分った。やっぱり改行を消して1行に繋げないとダメだった。
>>419 の対象データだとそれをしなくてもたまたま置換に成功してしまうので
1行に繋げなくてもいいのかと勘違いしてしまった・・(おかしいなとは思ったんですが)
テスターなら2行のままで、フラグの「x」にチェックを入れれば動きます。
動作確認不足で申し訳ない・・
>>433 > type="TAXI"があるかどうかの確認が必要になるし。
だからこそxpathでいいじゃんって話なんだけどなぁ。
まぁ、遅いかもねっていうのは否定しない。メンテナンスの容易さとトレードオフで。
ああ、xmlで直に指定出来たのね、知らなかった・・
実際使えてるみたいだし固まるとかも余計な心配だったね。
今更だけど
>>436 に「g」のチェックも追加。これ付けないと最初の1つ目しか置換されないという・・
gdgdですまん。
439 :
デフォルトの名無しさん :2013/08/03(土) 13:05:23.00
質問です。 検索する文字列の条件(例えば英字で挟まれている数字列)と取り出す文字列の条件(数字列)はの 記述は。どのように書き分けるのでしょうか?
>>439 > 質問です。
| 質問する場合は必ず実装言語や処理系ソフトウェア名を示してください。
母国語のフォーラムでやればいいのに
翻訳ソフトをかまさないでくれ 理解できん
このレベルを理解できないのはまずいだろ。 内容はごく簡単なものだが、母国語でやるほうが楽だと俺は思うんだ。
こうやって茶化すのは嫌いだ。
>>439 <match>
[a-z](\d+)[a-z]
<replace>
$1
445 :
439 :2013/08/03(土) 21:49:54.32
レスありがとうございます。 言語はobjective-cです。 例は質問の意図を説明するもので、「例の回答」を求めているわけではありません。 検索する文字列の条件と取り出す文字列の条件の記述は、 「一般的に」どのように書き分けるのかという質問です。
なんで対応しようとしちゃったかなぁ。
>>445 どういう回答を期待してるのかがよく分からないので、その質問の答えとして
「一般的に」どう回答すると良いのかを示して下さい。
phpで作ってるプログラムが予想とは違う動きをしたので質問です??
自分の環境ではありませんが、
http://phpreg.1weekhack.com/preg_match のサイトで??
検索ルール:/あ/??
検索対象:aいa??
では場合はマッチしないのですが??
検索ルール:/[あ]/??
で検索した場合、「い」の部分にマッチしてしています。??
どちらも同じ意味だと思うのですがどのような違いがあるのでしょうか
すいません 改行部分が文字化けしてますが無視してください
>>448 これを理解するには文字コードの知識が必要。
そのサイトの文字コードはUTF-8。
UTF-8での あ と い はそれそれ以下のように3バイトで1文字を表している。
あ = E3 81 82
い = E3 81 84
[あ] は E3 または 81 または 82 にマッチする。
い には E3 と 81 があるのでこの2つに2回のマッチが成功する。
[あ] は、 あ を構成する3つのパーツとして認識し、そのパーツと一致するパーツを検索する。
ちなみにUTF-8でなくshift_jisやeuc-jpなどの他の文字コードでは あ や、 い を構成する パーツがUTF-8と異なる。 shift_jisで E3 81 82 を使って あ にマッチさせようとしてもマッチしない。 また、 [あ] が あ にしかマッチしない環境もある。 その環境では正規表現エンジンがマルチバイトに対応しているということ。
なるほど 私のPHP環境では正規表現エンジンがUTF8に対応していない ということですね… 非常にわかりやすい説明ありがとうございます
検索ルール /\xE3\x81\x82/ 検索対象 どあ ⇒3バイト目(あ)にマッチ。
455 :
450 :2013/08/05(月) 13:49:27.82
>>454 あら・・そんなオプションがあったとは。
/uって何だろうと思いながら調べなかったのがいけなかった。
>>452 半端な回答してごめん。
半端といえば半端だけど、わかりやすい説明ですごいと思った。
読み上げソフトの正規表現で w の連続を読み上げさせないようにする為に 正規表現 [WwWw]{2,} 置き換え なし として、上手くいきました そこでふと気がついたのですが [W|w|W|w]{2,} とするとどうなるんでしょうか? [WwWw] と [W|w|W|w] の解釈の違いがわかりません 正確には、それぞれどういう意味になるのか教えて頂けませんでしょうか?
>[W|w|W|w]{2,} とするとどうなるんでしょうか? >[WwWw] と [W|w|W|w] の解釈の違いがわかりません 確認。聞きたいのは (W|w|W|w){2,} だよね? ちなみに、[W|w|W|w]{2,} は [WwWw|]{2,} と同義
寝ちまってるのか。んじゃ、 [WwWw] と (W|w|W|w) の解釈の違いがわかりません …と仮定して答えておくね。 [WwWw] は、文字 W、w、W、w のどれか。文字とは1文字のみのこと。 (W|w|W|w) は、文字列 W、w、W、w のどれか。文字列とは1文字〜複数個の文字。 だから、(WWWW|wwww|WWWW|wwww) なんてのもOk。
460 :
450 :2013/08/18(日) 09:43:13.23
前から読み上げソフトの質問してる人かな。ソフト名が分かればより的確な回答が得られるよ、と。 正規表現にもいろいろ種類があってそれぞれ動作が様々だからね。
>>458 >>459 有難う御座います参考になりました
>>460 すみません、使用してるのは、棒読みちゃん、TextToWav、SofTalkのそれぞれを試している状態です
462 :
461 :2013/08/19(月) 00:04:22.93
皆さん有難うございました 丸括弧と角括弧の意味を、まともに理解できていないので、もっとちゃんとググってみます
>>462 精進してくれたまえ。
あと、
>>459 の記述に微妙な間違いがあったので訂正しておく。
>(W|w|W|w) は、文字列 W、w、W、w のどれか。文字列とは1文字〜複数個の文字。
誤)文字列とは1文字〜複数個の文字。
正)文字列とは0文字〜複数個の文字。
でした。失礼。
だから最初が空文字(=0文字)の、(|wwAB|WWXY|ww19) とかでもOk。
>>463 × 文字列とは0文字〜複数個の文字
○ 文字列とは0文字〜複数個の文字の羅列
処理効率は [WwWw] >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> (W|w|W|w) なので前者を使ってね。
>>465 W|w|W|w
だと処理効率はどうなるの?
後方参照のためのキャプチャもすることになる
(W|w|W|w)
の効率が良くないのは火を見るよりも明らかだけども
([WwWw]|hoge) と (W|w|W|w|hoge) はどっちが速いん?
>>466 ( | ) での分岐ではバックトラック処理が原因で遅くなることがある。
正規表現を詳しく知りたいなら
>>8 の本を読むべき。(ステマじゃないよ)
>>467 ReplaceStrTool(鬼車エンジン)での測定結果。
([WwWw]|hoge)
[マッチ= No ] [検索=16113.288 ms] [置換=16154.999 ms] [ループ= 1000 ] [文字数= 107016 byte]
(W|w|W|w|hoge)
[マッチ= No ] [検索=1094.331 ms] [置換=1158.184 ms] [ループ= 1000 ] [文字数= 107016 byte]
他の正規表現エンジンでもこういう結果になるとは限らないので注意。
>>468 ([WwWw]|hoge)だと()用と[]用の2つのルーチンを交互に呼び出すから遅くなるとかかな?
ちょっと意外な結果だ。検証thx
.NET Frameworkの正規表現を使ってるソフトで試してみたら ([WwWw]|hoge) : 48秒 (W|w|W|w|hoge) : 48秒 で変わらずだった。このへんは正規表現エンジンのクセなんだろうね
正規表現の正規化とかしてたりするかもね。
おまえの頭がおかしい。おまえが今すぐ消えろ
ネタにマジレスせんでも・・
まだhoge使ってる奴いるのか
higeダンス
書籍を選ぶときはまずサンプルコードを見ること。 サンプルコードでhogeを使ってる本は100%悪本だからまず最初に除外できる。 hoge使ってない本の中にも悪本はあるが、hoge使ってる書籍は間違いなく悪本。
国内のプログラマーは何使ってるもんなの?
俺はfoo bar baz使ってる
481 :
デフォルトの名無しさん :2013/08/27(火) 02:12:50.33
far byo oon
hage
hoge使って解説してるサイトって大抵いい加減な内容なんだよなwあんなもん読んでたら頭腐るwww
piyoってめぞん一刻みたい
485 :
デフォルトの名無しさん :2013/08/27(火) 13:06:51.05
言語はJavaです。 文字列 str = "<tr><td>aaa</td><td>bbb</td><td>ccc</td></tr>" に対して、一番最後の<td>から</tr>までを削除したくて Pattern.compile("<td.+?</tr>").matcher(str).replaceFirst(""); などとやってみましたが、最初の<td>から</tr>までが削除されてしまっているようで <tr>しか残りません。 最短マッチの方法が間違っているのでしょうか? (実データではaaa,bbb,cccは再帰的にタグが入ります)
Javaでは試していない。 一般的な正規表現で示します。 検索:^(.*)<td>.*</tr>$ 置換:\1 ※改行は含まれないこととする。 ※この場合、先頭の^と末尾の$は無くても0k。 否定先読みを使う場合は、 検索:<td>((?!<td>).)*</tr>$ 置換:空文字 ※改行は含まれないこととする。 ※この場合、末尾の$は無くても0k。
491 :
461 :2013/09/11(水) 23:30:12.39
ぐぐったら漢字の範囲指定で Shift_JIS だと [亜-熙] Unicode だと [一-龠々] のようですが、合ってます? 仮に Unicode に [亜-熙] を使って検索で取り出そうとすると 一部の漢字が漏れてしまいますか?
>>491 環境にもよるが、Unicodeで漢字と非漢字日本語文字を分別するのは容易でない。
正規表現がそういう用途のものではないから。
まずは対象の正規表現の仕様/ヘルプをよく読むことだね。
それより、何をしたいのか具体的に書いた方がいいと思う。
495 :
461 :2013/09/12(木) 12:57:53.12
>>492 ありがとうございます
>>493 ググってみます
>>494 渡されたエクセルのの文書と名簿がぐちゃぐちゃで
名前と思われる部分だけを全て切り取り
作った表に貼り直そうと思いまして
●Regular Expressionの使用環境 Visual C++ ●検索か置換か? 置換 ●説明 同じ文字/文字列を3回以上繰り返してる物を1回にしたい ●対象データ→結果 IEEE→IE うわあああああああ→うわあ bbcdbcdbcdbcdd→bbcdd あのあのあのあの→あの
>>496 C++ではなくJavaの例で悪いが
str.replaceFirst("(.+?)\\1{2,}", "$1")
>>496 非決定性にすればよいのかな
bbcdbcdd も解だし。
「ああああいあいあい」の変換も「ああい」なのか「あい」でもよいのか、ちょっと曖昧。
>>498 「bbcdbcdd」と「あい」は、どうしてそうなるの?
あー、「あい」は分かった。 「ああああいあいあい」→「あいあいあい」→「あい」 でも正規表現による置換の話だから、「あいあいあい」となるのを期待するよね。 それ以上は置換されなくなるまで繰り返しやがれ、って感じかな。
>>498 dbc が3回繰り返されているからそういう選択もある。
>>500 後半を先に置換すると ああい になる。
503 :
502 :2013/09/16(月) 15:03:11.97
ごめん。その話は上にでていたね。
>>501 なるほどなるほど。
>>502-503 そうです。
まあ一般的な正規表現による置換をするって話ですから、
後方からとか、一発で複数回置換とかは無いよね。
●Regular Expressionの使用環境 EMEditor、サクラエディタ ●検索か置換か? 検索 ●説明 最短マッチ(非貪欲マッチ)したいのですが、貪欲マッチになっています。貪欲、、非貪欲がそもそも分かってない可能性もあります。 Webプログラム板の正規表現スレでもお聞きしたのですが、教えていただいたとおりでうまく行かなかったのでこちらにきました。 NN\s.*?VBNで検索してみました。最初のNNからマッチしてしまいます。 ●対象データ In_IN Israel_NNP ,_, freedom_NN of_IN opinion_NN and_CC risk_NN taking_NN are_VBP strongly_RB supported_VBN ._. ●希望する結果 NN are_VBP strongly_RB supported_VBNの部分だけにマッチして欲しいのですが。 In_IN Israel_NNP ,_, freedom_NN of_IN opinion_NN and_CC risk_NN taking_NN are_VBP strongly_RB supported_VBN ._. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
506 :
505 :2013/09/22(日) 12:44:40.53
アンダーラインがおもいっきりずれましたが、希望は一行目の通りです。m(_ _)m ●希望する結果 NN are_VBP strongly_RB supported_VBNの部分だけにマッチして欲しいのですが。
>>505-506 例示がもっともっともっと欲しいなあ。
その条件だけだと、"NN are_VBP strongly_RB supported_VBN" で
検索すればOkということになってしまうよ。
508 :
507 :2013/09/22(日) 12:58:39.87
ああ、NN\s.*?VBN から推測するのか。
509 :
507 :2013/09/22(日) 13:07:48.95
>>505-506 NN\s((?!NN).)*VBN
でOk。
サクラエディタ Ver. 2.0.5.0
EmEditor Professional Ver4.13(古い…)
で確認。
510 :
507 :2013/09/22(日) 13:19:37.69
おまけ。 NN are_VBP strongly_RB supported_VBN_RB supported_VBN みたいなときに全体にマッチさせたくなければ、非貪欲マッチを使って ↓これで。 NN\s((?!NN).)*?VBN
>>505 サクラエディタ本体と正規表現DLLのバージョンを書いて下さい
\sの挙動に影響します
512 :
507 :2013/09/22(日) 13:41:44.44
>>511 厳しいんだな(笑)
そう思ったけど、本体で識別くらいでエエかなと。自分も一応書いとくね。
サクラエディタ Ver. 2.0.5.0
bregonig.dll Ver.3.02 with Onigmo 5.13.2
\sの部分はお好みで半角空白とか[ \t]に変えてもいいよー。
>>507 OKでした。ありがとうございます。m(_ _)m
なるほど。勉強になりました。
EMeditor Free 6.00.4で確認しました。
>>511 すみませんDLLバージョンの確認方法を教えてもらえれば助かりますが。。。そんなレベルでつ (汗
514 :
デフォルトの名無しさん :2013/09/23(月) 15:35:32.97
ついでに聞いちゃえってか
>>515 ありがとうございます。
サクラエディタ Ver. 2.0.4.0
bregonig.dll Ver.3.01 with Onigmo 5.13.0
でした。
ストリーミング対応の正規表現ライブラリって無い? 多分言っている意味がわからないと思うけど、 テキスト全部が揃ってないと使えない 正規表現ライブラリじゃなくて、 データがストリーミングで流れてくるものに対して、 途中でマッチしたらなにか処理をして マッチしなければ(マッチしないことが確定すれば) その時点でデータを吐き出すやつ。
javaの正規表現ライブラリapache-oroはストリーミング対応だがパフォーマンスは悪い。
やった、情報得られたw これで関連情報も探せそう。 ありがとう
boost regexのmatch_partialも使える。
やっぱりそういう高度なことは、 JavaやC++なんですね。 ありがとうございます。
そんなこと言うと、ここのパールおじさんたちが発狂しちゃうよ
Javaのはよくわからんけど、match_partialぐらいなら Perlでも実装できそうなものなんだが
●Regular Expressionの使用環境 Visual Studio 2012 ●検索か置換か? 検索 ●説明 <>の中にある文字を順に検索していく方法を探しています ↓の2行の文章では これは<りんご>です。 これは<100円玉>です。 エディタで<.*>で検索すれば、 <りんご>、<100円玉>がヒットするのですが これは<りんご>です。これは<100円玉>です こんなように一行のときに<.*>で検索すると <りんご>です。これは<100円玉> というようにヒットしてしまいます ●求める結果 一行の場合でも、<りんご>、<100円玉>というように個別に ヒットさせたいです そのための検索キーワードは何になるでしょうか
>>526 ありがとうございます!
無事いけました!
●Regular Expressionの使用環境 サクラエディタ ●検索か置換か? 置換 ●説明 1行の中に同じ単語が2連続しているのを1つだけにしたいです。 ●対象データ appleapple orangeorange grapegrape ●希望する結果 apple orange grape よろしくお願いします。
529 :
507 :2013/09/26(木) 23:18:36.43
>>528 置換前:\b([a-zA-Z]+)\1\b
置換後:\1
ただし、AA→A とか、anan→an になるけどいいの?
名前欄そのままだったテヘペロ
>>529 置換できました。
本当にありがとうございます!
ananがanになるようなケースはめったになく、
別システムでチェックできるのであったら手動で戻します。
>>529 それは+のとこを{3,}とか適当な数字に直せばいいんでねえの
533 :
529 :2013/09/27(金) 00:30:37.42
>>532 と申されましても私には良いか悪いか分かりませぬ。
何文字になろうが、意図しない置換が行なわれる危険は残るので。
逆に、意図した置換が行なわれなくなる危険も。
>>531 という指摘がありましたので、
\b([a-zA-Z]{3,})\1\b
このようにすれば3文字×2以上のみにヒットするようになります。
これでananもTOTOも安心!
>>532 >>533 少し遅くなりましたがありがとうございます。
数字や一部の記号を含む5文字以上のユーザIDなので、
\b([a-zA-Z0-9_-]{5,})\1\b
という形で使わせて頂きました。
"123,456,789"から","だけを削除して"123456789"にするにはどうすればいいの? 前後が数字になっている","だけにマッチするのって正規表現だけでできるの? "[0-9],[0-9]だと前後の数字にもマッチしちゃうよね。
>>535 正規表現だけでできるよ
正規表現 戻り読み
正規表現 先読み
で検索
>>535 >"[0-9],[0-9]だと前後の数字にもマッチしちゃうよね。
置換ならマッチさせて問題ないんだよ。
ついでに 1,2,3,4 みたいなのに対応させるため先読みを入れてみる。
検索:(\d),(?=\d)
置換:\1(または、$1)
>前後が数字になっている","だけにマッチするのって正規表現だけでできるの?
戻り読みを使えばできるけど汎用性が劣るから、上記の方法がおすすめ。
一見簡単にみえて正規表現では 解くのが難しい、もしくは不可能な、 フェルマーの最終定理のような 正規表現問題を教えて下さい。 なお、質問の目的はこのような種類の問題であれば 正規表現で頑張るのは諦めてさっさと別の アプローチに変更した方がいいという判断の 材料にしたいからです。
>>538 \dは環境によっては(Unicode対応以降のPerlや鬼車とか)、
全角数字にもマッチしちゃうから、環境を明記してない質問には
[0-9]で回答した方が無難だよ
>>540 そうなのか、ありがとう。きっと\wもだよね。
しかし余計なお世話的仕様が一般化してるよなあ。
>>538 ということで、より
汎用性を高めるとこうなります。
検索:([0-9]),(?=[0-9])
置換:\1(または、$1)
今回のような単純なケースで、戻り読みには汎用性がないとは具体的にどのようなケース?
>>542 ケースではなく以下の理由で、実用には常に戻り読みを避けた「汎用的な正規表現」を使います/教えます。
・ JavascriptやWSH、エディタなど、戻り読みが無い環境は多い。
・ 先読みまでサポートしたものを「汎用的な正規表現」の環境と思っている。
・ 初心者は安易に戻り読みを使うより、「汎用的な正規表現」で置換などのテクニックを磨いた方が応用が利く。
・ 戻り読みは制約が多く、よく理解していないとハマりやすい。
・ (今回は単純だけど)戻り読みが必要なほどの正規表現は往々にして複雑すぎる。その場合は正規表現一本で済ますことを再考すべき。
それ、そういう実装がない環境があるってだけじゃねえの? 「汎用的」って言葉が曖昧だし、その割に明確にプラスみたいに語ってるし。
ちょっとしたトンチのような s/([0-9]),(?=[0-9])/$1/g を思いつけるようになる訓練をしろ、というのは初心者には辛いのでは 正規表現である程度以上のことをしようと思ったら、こういうテクニックも重要なのはわかるけど、 むしろ中級者以上向けじゃないか?
先読み程度は初心者でもすぐに使えると思うけど? 正規表現を始めてすぐ、特定するのに困ったとき正規表現一覧を見てすぐに使えたし
先読みや戻り読みのような「マッチはさせない検索条件」というのはイメージしづらく初心者には実用例でもないと理解しづらいと思う ただ今回の質問者は「正規表現に非マッチ指定がひょっとしてあるのでは」というイメージを始めから持ってるから、 先読みや戻り読みを理解できる素養はあるように思われる
初心者であっても必要性を感じた人ならコマンド一覧を見れば使い方も分かると思う が、必要な場面に遭遇してない人ならコマンド一覧を見たって 「へーこんなのあるんだ。何に使うんだろ?」って感じるだけだろう
>>544 冗長になると思って端折ってしまったのは良くなかった。
「『基本的な正規表現』のみを使用した汎用的なパターン」と言うべきだった。
・ 先読みまでサポートしたものを『基本的な正規表現』の環境と思っている。
ですね。もちろんプラスだと思ってるよ。
>>545 >>546 そうかもしれない。けど、先に戻り読みを知るよりはずっと良いと思う。
>>547 完全に同意する。
同様に、[0-9],[0-9]のパターンを完全独力で導き出したのだとしたら、かなりセンスいいよね。
それが出来るなら置換マジックもすぐ理解できると思った。
ついでに言うと、「マッチはさせない検索条件」=「文字ではなく位置にマッチする検索条件」
だよね。大抵これが解説されておらず、学習者を混乱させる原因になっている。
普段から正規表現やってる人って 普段何やってるの? 関数にするから、同じ正規表現を書くなんて めったにないはずだし、 なかなか覚えられるものじゃないはずなんだが。
>>551 自然言語で書かれたウェブサイトを解析するアルゴリズムの研究開発
つまんなそうw
>>549 >ついでに言うと、「マッチはさせない検索条件」=「文字ではなく位置にマッチする検索条件」
>だよね。大抵これが解説されておらず、学習者を混乱させる原因になっている。
確かにそうかもな。
手持ちのPerlやRubyの解説本を読んだけど説明不足なのが多いと思った。
行頭とか行末について説明する時に一緒に解説するといいのかもね。
これができるとエディタとかの置換でも応用効きそうだし。
>>551 普通のWebデベロッパだが至るところで使いまくりだけど…?
ちょっとした文字列の解析なんて至るところで登場するだろ
>>550 の解き方は解き方の定番の1つ。数学の公式みたいなもので他に応用が効くんだよ。
>>8 の本では /* ここはコメントよ */ にマッチする正規表現の作り方として出てくる解法。
>>555 まさか、同じ正規表現を
何回も書いていたりしないよね?
DRY
>>551 grep,sed,awk。基本ワンライナーで使い捨て。用途はやっぱりログを見るのが多いかな。あとはウェブスクレイピングとか。毎回違うし、ライブラリ化しない。
>>558 難しいものは共通化して簡単なものはリテラル
簡単なものでもリテラルにする必要ないでしょ? 関数にしちまえよ。
なんか普段から正規表現を触ってる人が同じ正規表現を作ってると思い込んでない?
>>550 の問題なんか見た瞬間に簡単な問題だなって思う程度の問題だよ?
俺なら
>>550 のサイトに書いてある正規表現よりずっといい正規表現を作れる。
まったく別のアプローチからね。
>>8 の本読めば解けるようになるから正規表現が好きなら読めばいいと思うよ。
>>562 ぜひご披露願います。もちろん先読みを使わずに、だよね?
自分は簡単だとは思わなかったな。ループ展開っていうのも分からない。
現物合わせの場合分けでは無いということかしら。
それと、このページかなり昔に見たな〜。
その時も思ったけど、練習用にテスト文字列が用意されてればいいのに。
ということで用意しました。
AA0000AA
AA000AAA
AA00A0AA
AA00AAAA
AA0A00AA
AA0A0AAA
AA0AA0AA
AA0AAAAA
AAA000AA
AAA00AAA
AAA0A0AA
AAA0AAAA
AAAA00AA
AAAA0AAA
AAAAA0AA
AAAAAAAA
>>563 >ぜひご披露願います。
>>8 の本の270ページ前後を読んで。俺の言ってるアプローチというのはこれのことだから。
俺が本の内容をココに書いたら営業妨害になるんで・・
>もちろん先読みを使わずに
yes
>ループ展開っていうのも分からない
正規表現 ループ展開 でぐぐれば出てくるよ。
>>564 いや、とりあえず↓この模範解答だけ教えてよ。
>俺なら
>>550 のサイトに書いてある正規表現よりずっといい正規表現を作れる。
>まったく別のアプローチからね。
この問題を解決する正規表現パターンを提示することは営業妨害にならないでしょ。
俺忙しいから無駄なことしたくない。おやすみ^^
>>566 あなたは件のサイトの解法とはまったく別のアプローチからずっといい正規表現を作れるけど、
作るのと検証にはかなり時間がかかるからヤダ、っていうことかな。
「3分でループ展開まで出来ちゃう」人とは別人だったのか。残念。
しかし、口ばっかりで自前の正規表現を出さない人が増えたなー。
私がこのスレを見始めた頃は、ふらりと現れてすごい正規表現を置いていく兄さん方がたくさん
いた記憶があるんだけど。
一つ疑問を投稿すれば分かるまで正規表現エンジンの動きを解説してくれて、とても感謝した。
自分がネット独学で十分な技量を身に付けてしまったから、相対的にそう思えるのかな。
でも、O'Reillyの本読んで学問的に探求できるほど頭良くないんだよね、残念ながら。
>>568 お笑い詳しくないし、やっくんのこともほとんど知らんけど、他界したという速報を
聞いたときショックだったわ。なんか親しみある人だった。
てか、声優としてキャリアあったのか。
>見たら作ってあげるよ。
私に見ろってことかい!
作る気あるならすぐに出す、無いなら引っ張らない。どっちかにせい。
時間稼ぎw
横からちょっとコメントしますよ エディタだとダメかも知れないけど ^AA.*AA.*AA$|(.*) で$1を使うという方法がある
^AA[^A]*(A[^A]+)*AAA?$ /\___/ヽ (.`ヽ(`> 、 /'''''' '''''':::::\ `'<`ゝr'フ\ + |(●), 、(●)、.:| + ⊂コ二Lフ^´ ノ, /⌒) | ,,,ノ(、_, )ヽ、,, .::::| ⊂l二L7_ / -ゝ-')´ .+ | `-=ニ=- ' .::::::| + \_ 、__,.イ\ + \ `ニニ´ .:::/ + (T__ノ Tヽ , -r'⌒! ̄ `":::7ヽ.`- 、 ./| ヽ¬. / ノ`ー-、ヘ<ー1´| ヽ | :::::::::::::ト、 \ ( ./ヽ \l__,./ i l.ヽ! | .| ::::::::::::::l ヽ `7ー.、‐'´ |\-、
573 :
571 :2013/10/09(水) 09:41:10.95
間違った もっと絞らなきゃいけなかったね 簡単だから修正して 考え方 文字列xyzを含まない → 文字列xyzを含むものを除いた残り .*xyz.*|(.*)
冗長レス、低脳AA、すべて不要なんだよ補欠ども。 だからレギュラーが取れないんだよ。補欠表現者ども。 有益な情報のみ貼り付けろ。 それ以外はてめーのケツの穴にでも突っ込んどけ補欠ども。
本買えばいいじゃん。このスレに張り付いてても本読んだ人から見たらゴミみたいな
正規表現しか書けないぞ。
カネが無いなら初版の中古本を買うといい。びっくりするくらいの値段で買えるぞ。
http://www.amazon.co.jp/dp/4900900451 内容はおまえが思ってるほど難しくはない。基本的なことを繰り返し何度もしつこく
説明している印象が強い。ただプログラミング経験者でないとつらい。
あと他人に当り散らすのはやめろ。正規表現道を極めたいなら人間的にも成長しろ。
感情をコントロールしろ。周りの人間を威嚇するな、バカ犬じゃあるまいし。
576 :
馬鹿1号 :2013/10/12(土) 04:56:33.09
正規表現練習って、ググったら多分すぐ出てくる 正規表現練習ツールってのが出てくると思うけど あれ俺が作ったんだわ。で、今、ソース非公開にしてるけど 理由は、C#を勉強していて正規表現ってのを使いこなせる ように練習ソフトって無いかなーと思ってググったけど無いんで じゃ、作っちゃおと思ったのがきっかけで、そんで作ったは良い けど全然自分で使ってなくて、で、改良していったのは良いんだ けど、今、見直してもソースがグチャグチャでコメントもろくに いれてないしで、正直、恥ずかしいからソース非公開にしたん だけど、やっぱソース公開したほうが良いのかな? 恥ずかしいんだよなー スレ違いだけど、公開したほうが良いですかね?
578 :
馬鹿1号 :2013/10/12(土) 06:34:18.03
>>577 違うよ
正規表現練習ツールってやつです。
Visual REGEXPしかしらん
へえ 使ってみよう
>>581 思ったより安かったので、つい横からポチった俺…
ちょw 最低価格が232円だったのが1250円になってるw
>>573 問題の主旨は
「htmlソースの中から <p>xyzを含まない文字列</p> を検索したい」
みたいな場合に使える正規表現を作ること。
htmlソースの他の部分にxyzがあっても動作することが求められる。
>>571 は手段の1つとしてはアリ。
欠点は全ての行にマッチしてしまうので置換結果をテストしないと
求める行かどうか分からない。つまり二度手間になる。
そもそもその「置換結果をテスト」の内容がやりたい置換作業じゃねえの? 全部の行をそっくりコピペで貼付けたあと、必要ない行を一行ずつテストして 消していいならどんな複雑な置換でもできちゃうよ。
あんな複雑な正規表現を作らなくても出来る方法がある、と言いたかったんだと思う。 そういうことに気付くのも実用上は重要だったり。
あと
>>572 の正規表現だけどあれはA[^A]を軸にして作っているが
[^A]Aを軸にして作ることも出来る。これが別のアプローチ。
興味のある人は作ってみてね。
>「htmlソースの中から <p>xyzを含まない文字列</p> を検索したい」 >htmlソースの他の部分にxyzがあっても動作することが求められる。 >欠点は全ての行にマッチしてしまうので置換結果をテストしないと >求める行かどうか分からない。つまり二度手間になる。 どうして?
>>591 <html>xyz<p>ABC</p></html>
から
<p>xyzを含まない文字列</p>
を検索したいとする。(この場合は <p>ABC</p> をマッチさせたい。)
こういう場合に .*xyz.*|(.*) では役に立たない、というのは分かるかな?
>>550 のサイトではこういう場合に使える正規表現の作り方を解説している。
逆に言えばこういう場合に使えない正規表現は問題の主旨から外れてしまう。
いや俺が言ってるのは ^AA.*AA.*AA$|^(AA.*AA)$ を理解した上でってことだったから重ねて質問したまで つまり <p>.*xyz.*</p>|(<p>.*</p>) を想定した上での質問
>>591 >二度手間になる。
ごめん、これはプログラムの中で正規表現を使うときの話ね。
テキストエディタで使うときは置換結果をテストする必要がないので
(いらない行が空行になるので一目瞭然だ)二度手間にはならない。
>欠点は全ての行にマッチしてしまうので >それを理解したうえで書いたものだけど どっちかがウソだよね?
すべての行にマッチしまうってそもそもダメだろw 自分でおかしいと思わないのかな?
あまちゃんすぎてすみません。 正規表現でマッチングしたいっていうところなんですが、 ソースが まどかほむらマミさんまどかマミさんまどか とあった時に、最初の「まどか」から二回目の「まどか」までを選択したいんです。 まどかほむらマミさんまどか この範囲です。 ただ、このとき、ほむらとマミさんは不確定な内容だもんで、正規表現を使いたいというところです。 このときに、 まどか.+まどか でマッチングすれば まどかほむらマミさんまどか が出て来てくれると思ったんですが 最後のまどかまで拾ってしまいます。 上のソース、最初から最後まで拾ってしまいます。 .+の後の要素が始めて出てきた時点で、そこまでを範囲とするような指定はできませんでしょうか?
まどか.+?まどか
ほむらちゃんの正規表現巻き戻し機能を使うしかないな。
>>598 ありがとうごさいます。バッチリです。
>>599 因果の糸が絡むと「まどか」が増えそうなのでやめておきますね。
601 :
デフォルトの名無しさん :2013/10/14(月) 04:09:09.19
最長マッチにかかって悩むレベルならwebprogに帰れよ
><p>.*xyz.*</p>|(<p>.*</p>) >を想定した上での質問 なにが? >どっちかがウソだよね? どうして?
あんたって、ほんとバカ
>こういう場合に .*xyz.*|(.*) では役に立たない、というのは分かるかな? これが分かってないんだね。<p>.*xyz.*</p>|(<p>.*</p>)でも使いものにならないんだよ。 それを分からずに人のことを誹謗中傷するとか・・
>>550 のテスト用テキストに^AA.*AA.*AA$|^(AA.*AA)$を適用すると全行にマッチする。
全行にマッチしないと言ってる人は何を対象に適用させる話をしてんだろう?そんな話はしてないのにね。
先に<p></p>で囲まれた文字列をmatchさせてそれに対して使えばいい
それより.*xyz.*|(.*)の考え方じゃないのなら、
>俺なら
>>550 のサイトに書いてある正規表現よりずっといい正規表現を作れる。
>まったく別のアプローチからね。
をぜひ披露してもらいたいな
まさか、
>>588 のことじゃないだろうしね
>>588 のヒントで作れるぞ、俺は作れたし。もしかして作れないの?
>先に<p></p>で囲まれた文字列をmatchさせてそれに対して使えばいい これは酷い
本早く届かないかなー
(?^: regexp ) perlで何故かこれが動いた。
マッチをするたびに、暖かい料理や暖炉の幻影がみえて、朝になると死んでた
マッチをするたびに、暖かい料理や暖炉の幻影がみえて、朝になると死んでたは甘え マッチするたびに痴漢されて慰謝料で生活費を荒稼ぎするくらいの気概がないと
いわゆる性器表現で痴漢という奴ですね。
615 :
デフォルトの名無しさん :2013/10/18(金) 19:00:48.58
漏れのマッチをするな
>>611 /z\r$\n^/m
$は\rと\nの間にマッチ
>>610 winのコマンドプロンプトだと動くね。
C:\>perl -e "if('123' =~ \"(?^:2)\"){print \"match\";}"
しかし同じコードをperl test.plで起動しても動かない。
618 :
デフォルトの名無しさん :2013/10/20(日) 05:43:49.29
>>617 こちらではplでも動作した。if('123' =~ "(?^:2)"){print "match";}
([^x]*)* = [^x]* こういう無駄が多いね。
Perlで以下のようなHTMLの <select id="select_id"> <option value="option_value1">あ <option value="option_value2">い <option value="option_value3">う </select> selectタグのidとその中にあるoptionタグのvalueを $hash->{select_id} = [ option_value1, option_value2, option_value3, ] のようなデータを作っていくようなコードではどのような正規表現を使えばいい? 実際のHTMLと同じで、selectやoptionにはその他の属性があったり selectは複数あったりするという前提。selectの閉じタグがないとか 壊れたHTMLまでは対応しなくていい。 一旦select+optionを抜き出してから、その中のoptionを探すか、 正規表現一つで一度に処理するかなやんでるんだ。
perlでその処理が必要ってのが謎すぎる。まー、やりたい方法でやればいいんじゃね。
>>619 otbeditで動かしてみたらotbeditが異常終了したw
>>622 それは他の処理をするプログラムの一部だから。
全体的にperlで書かれていて、この部分だけ
perl以外を使おうとする発想は普通ない。
なるほど、HTMLを走査する処理をperlでやる機会が無かったから不思議に思ったw 正規表現は俺が作るなら・・正規表現を使わずに文字列操作関数で作る。動作が早いし。
文字列操作関数だと長くなるでしょ? さくっと取り出したいのよ selectのid部分とoptionのvalue部分を
なる、特定のidから取る訳じゃないのか。なら\Gと/cを使うとラクチンだよ。 \Gは文頭と前回マッチした最後の位置にマッチする。 /cは前回マッチした位置から検索を始めるオプション。
>>621 そこまで条件つけるならHTMLパーサ使えば。
>>627 了解調べてみる。
>>628 メインの処理の最後に挟み込む、
簡易なフィルタ扱いなので、
なるべく軽くしたい。
>>629 ならそういう省略されたhtmlとか諦めた方がいいんじゃない。
何が分からなくて来たのか分からない。
>>639 省略されたhtmlってなんのことですか?
</option>で閉じてないってことじゃない
^AAA?([^A]+A)*[^A]*AA$
>>619 ^
[^x]*
(
x+
(
[^xy]
|y[^xz]
)
[^x]*
)*
(x+y?)?
$
>>635 これもAAのと同じように別のアプローチで違った正規表現が作れる。
これ自体ももっと早く動くように最適化する余地が残っている。
>>634 と
>>572 、どっちが良い正規表現か、という問題もある。
本を読めばこんなのが簡単に分かる。読まない奴はそこまでだ。
スピードラーニングみたいでつね
本を持ってる人はまず素晴らしい正規表現を作って見せてください 回答例を一つも出さないとか理解できません 大口叩いてるだけでは本に対する印象が悪くなり逆効果です
つ <p>.*xyz.*</p>|(<p>.*</p>)
"0000000000"のような文字列を用意しておいて、"123" のような 任意の文字列を"0000000123"のように置き換えるのって簡単にできますか? 置き換える方の文字列は3桁じゃなくて、いろんな数字があり得ます。 C言語でいうsprintf(%10d, 123)みたいなフォーマットを正規表現で簡単に 再現できますか?
何で正規表現でやろうとするんだろう (00000000000000の桁数)-(123の桁数)の0を用意して123を引っ付ければ良いだけでは
テキスト中に幾つも数字列があってそれを"0000000000"で一気に書き換えたいってことだと
Q:〜みたいな置き換えやりたいんですけど。 A:最初からそういう文字列作ればいい。 なんでも通用する最強の回答だなw
最初からそういう文字列作ればいいって 誰が言ってるの?
wsh(jscript)だけど replace(/(\d+)/g,"0000000000$1").replace(/\d*(\d{10})/g,"$1") と2回置換ではダメ?(10桁より多い数字列があったら頭がちょん切れるけど)
おまえら難しく考えすぎ。 質問は 「簡単に出来るか?」 その答えにふさわしい回答は 「はい」 か 「イエス」 だ。
は、い いえっす
徘徊江洲だ
>>646 だめ。一回でできますので頑張ってください。
そろそろ環境言えよボンクラ
こういうとこで真面目に回答してるような奴は大成しない。 こんなことしてる時間と熱意を自分のために使うべきという発想が無いから。
いいよもう大成とか諦めてるから
エンコしてる傍らで暇つぶしにこのスレ見てるんで 真面目に考えてる時間を別のものに振り替えるものがない ボケーとしてるくらいなら考えてた方がマシ
そんなに時間あるなら
>>635 これの別バージョン作れよ。あと2パターン作れるぞ。
あんがとさん 暇つぶしのネタが増えた
s#(\d+)\d{3}/${1}123/
まちがえた s/(\d+)\d{3}/${1}987/
>>654 何をエンコしてるか、そこが重要だ。のんのんびよりだったら許す。
いや別に他のでもいいけど、ちょっと気になっただけ。
661 :
デフォルトの名無しさん :2013/10/23(水) 20:44:07.52
●Regular Expressionの使用環境 Visual C# ●検索か置換か? 検索 ●説明 同じ文字が5回以上繰り返されている箇所のある行を検索したい ●対象データ→結果 うわあああああい → マッチ aaaaaaaa → マッチ あいあいあい → マッチせず
宿題は自分でやれ
>>662 .*(.)\1{4}.*
Visual C#での動作は確認していない。
>>665 >
>>662 > .*(.)\1{4}.*
> Visual C#での動作は確認していない。
自分もC#での動作は確認してないけど
頭と尻の「.*」は無くてもいいと思う
え、「行を検索したい」とのことなんだが、違うかな?
まあ大抵の正規表現では行単位てのがデフォルトなんで そこを厳密にしたいのなら前後に「^」と「$」をつけるべきかと
何も調べずに質問してくるアホの相手してたらキリが無い。
>>668 マッチ範囲を検索語句のみか行全体にするかという話だよ?
それに、ヘタに「^」や「$」を付けると複数行テキストの文頭・文末になるぜっ!
>>669 十分ネタになってるからいいよ。
.*から始まる正規表現をスレに貼るのは私は何も知りませんって言ってるようなもん。
なんで? 理屈なしに批判だけでは分からんぞ。
>>670 > マッチ範囲を検索語句のみか行全体にするかという話だよ?
俺には最初の質問は
> 同じ文字が5回以上繰り返されている箇所のある行を検索したい
これは普通にマッチした検索語句がある行を検索したい、って読めるけどな
検索を行全体にしたいてのは
>>667 の勝手な解釈では?
>>673 だとすると、質問者が真に問うてたことはこういうことだと?
△ 同じ文字が5回以上繰り返されている箇所のある行を検索したい
○ 同じ文字が5回以上繰り返されている箇所を検索したい
アホくさ、本読もう。
何も調べずに質問してくるアホが回答者やってるようなもんだな。何も調べずに教える。 本人は親切のつもりで極悪コード貼るからたちが悪い。
>>668 > まあ大抵の正規表現では行単位てのがデフォルトなんで
grepなら大抵のテキストエディタがそうだろうけど、
今回はプログラミング言語について質問してるんだから、
同じ文字が5連続以上続いている行全体を配列かハッシュにでも突っ込んで、
何らかの処理を行おうとしてるんじゃないの?
後はこの質問が行全体ではなく5連続以上の同じ文字のみにマッチさせたいということであれば、
{n,}の構文が.net Frameworkの正規表現でサポートされていないといけないんだけど、
{n,}で直前文字のn回以上の繰り返しがはサポートされてない環境も多いよね
>>665-666 大変助かりました。自分なりに思考錯誤してたんですが、うまくいかず
>>677 で指摘されてるとおり、今回は行全体を抽出して
それをある処理にかけたいと思っていた次第です。
言葉足らずで申し訳ないです。
ですので、教えていただいた正規表現を元に
^.*(.)\1{4,}.*$
としたものを組み込んで試してみることにしました。
({n,}は.net Frameworkの正規表現でサポートされていると思います)
ありがとうございました
>>678 説明するときは、↓このようにマッチ範囲も書くといいね。
らめぇぇぇぇぇぇっ! → 全体にマッチ
>^.*(.)\1{4,}.*$
あれ、
>>677 をよく読んだほうがいいな。そのままでも実害はないけど、
{4,}は「行全体ではなく5連続以上の同じ文字のみにマッチさせたい」ときだよ。
その場合は(.)\1{4,}とする。
「^」と「$」も気になるね。まあ使い方で問題が出なければヨシだが…。
あるだけ盛ればいいってもんじゃないから、きちんと理解して使ってみてね。
↑メンヘラ臭がする
あれ、第三版の中古本も値段上がってる。英語版の新品より高いとか・・w
>>636 は英語版の第2版が出てるからそのうち日本語版も出るのかな?
>>8 は英語版が2006/8発売だから最新版とはいえ情報が古くなってる・・。
偶然にも2006/8はrubyに採用された正規表現エンジン・鬼車が初めて公開された月でもある。
当然第三版には鬼車(鬼雲)の正規表現は載ってない。
鬼車ってなんか怖いな ゲゲゲの鬼太郎の猛霊八惨あたりが使いそう
鬼車は柔道技
686 :
デフォルトの名無しさん :2013/10/28(月) 08:41:50.69
検索しても柔道一直線の方しか出てこないな 本物の柔道技じゃないんじゃまいか
肩車なら知ってる
689 :
デフォルトの名無しさん :2013/10/30(水) 19:56:45.01
●Java1.5 ●検索 ●真ん中のAを否定 かつ Aが含まれる にマッチするか ●対象データ 3桁限定 ABC true BAC false CBA true DEF false .*1.* & ^.[^9].* こんな正規を使ったのですができませんでした。 宜しくお願いします。
>>689 まず、何でそんな正規表現を試そうと思ったのか理解不能
691 :
デフォルトの名無しさん :2013/10/30(水) 21:19:15.35
(A[^A].)|(.[^A]A) こういうやつかな? Javaでどう書くのか知らないけど。
なんで正規表現のスレにOniguruma知らない奴が来てるんだ
<<690 あ、試してるクエリー確認せず張っちゃいました。。。
695 :
デフォルトの名無しさん :2013/10/30(水) 22:12:23.46
括弧つけたのがダメだったみたいだね。 1[^1].|.[^1]1 これでいけた。
ありがとうございます! プログラムで使うクエリーを色々試してるんですが、 条件が3、4個の複雑なクエリーだとどこが間違ってるのか、 頭がこんがらがってきちゃって
記号の羅列だからプログラミングよりも理屈が必要なので、最初はそんなもんだよ
>>692 それは数学を語るのにカシオの計算機知らないなんてな。と言っているように聞こえる。
>>698 正規表現は数学ほど理論と実装が分離できてないんで当てはまらんよ。
つか少なくともエンジンの名前について話が逸れてる状態において、
「俺は〜ってエンジンは知らん!」ってのは無知の喧伝にしか見えん。
>>699 程というのは程度の問題。つまりあなたの主観ということですね。私は初歩的な正規表現なら、エンジンの違いを意識する必要はないという主観です。
話題ではなく、
>>692 でスレへの参加を問題にしてましたので、それに対するレスです。
正規表現よりも前に変な奴には触るなって教わっただろ放っておけよ
>>702 お前さあ。。。ここで答えを聞くより先にやるべきことがあるだろ?
(.*[841].*){2} できました。 グループは試したと思ったんだけどなぁ
ミングに触らずに正規表現覚えた人は^と$が行頭、行末にマッチすると思ってるから注意な。
民具?ming?何?
プログラミングっていうおまえらには無縁な高度な技術があるのよ。
minGW
>>705 まるでそれを否定してるような言い方だけど
それはまさにそれのためでしょ何いってるの
wshのjscriptで abc123def456 これのcと1の間とfと4の間だけに一致させる方法ないですかね? "abc123def456".splitに投げたら["abc", "123def", "456"]が返ってくるのが理想です 後読みが使えたら(?<![0-9])(?=[0-9])でいけるんだけど使えなくて困る
>>721 match(/\d*\D*/g)
で最後のマッチ項目は捨てるのではダメ?
714 :
713 :2013/10/31(木) 18:17:28.96
いや$のみを弾けばいいのか match(/[^$]\d*\D*/g).join().split(",");
正規表現のお勧め本について教えて下さい。
今読んでるけど知らないことがいっぱいあったよ。\Cはなかなか面白い。
>>718 マルチバイト文字だろうが問答無用で1バイトにマッチ。
それどう便利なの? あとどれを同種とみなすかで実装ごとに不安定になりそう。
od xxd しなくて済むじゃん
>>450 より
あ = E3 81 82
い = E3 81 84
\xE3\x81\C どっちにもマッチ
面白いね。
面白いけどUTF-8はUTF-16かUTF-32扱いで処理して欲しいな。 文字バラバラにされたら溜まったもんじゃない。
\A(?=.\z)\C\C\C\z 3バイトで構成されている1文字にマッチ。$は誤作動の可能性があるので\z
\Zも誤動作の可能性あり?
>>727 最初の\Zともう1つの\Zがマッチする位置が別の位置になる可能性がある。$も同じ。
\zは一か所にしかマッチしないのでそれを回避出来る。
a\X
ネストって入れ子のことだよ。入れ子って分かる?
引き出し役が出し子だから、詐欺で騙された人のことかな
本半分読んだけど本物の教材はやっぱ違うな、というのが率直な感想だった。 ネットの情報は初心者を中級者にすることは出来るけど 中級者を上級者にすることは出来ないと確信した。 ついでにperlの本も買うかな、激安中古本があればだけどw
>>734 俺も今読んでる。完走目指して頑張ろうぜ。
ここ見ながら勉強してるのですが、
>>714 [^$] これはどういう意味でしょう
初めもなければ終わりもない円環の理
[]の最初に^が来た時は残りの物以外になるから、$のみを弾いている。$は終端のこと。 文頭じゃないということを言いたいのかな。あまり見ない表現ではある。
典型的な間違いにはまってる人多すぎ [] の中では $ は、$ 自身であって文末ではない。なので [^$] は $ 以外の任意の1文字。 [] の中は別文法。
つまり
>>714 は実質ほぼ match(/.\d*\D*/g) であって、怪しい表現ということだねー。
>>736 それ書いた者だけど、完全に間違いだから気にしないで
match(/\D+\d*|\D*\d+/g).join().split(",");
もっと良い書き方もあるんじゃないかと思うけど
まだ初心者だからこんな芸の無い書き方しかできないや
アー、\Dと\dの順序がひっくり返ってる 最初の質問を見直せばよかった
>>738-742 書いた方までわずらわせてしまってすみません。
ありがとうございました。
ここ見ながら勉強しないほうがいい。わりとマジで。
747 :
デフォルトの名無しさん :2013/11/12(火) 18:03:10.73
SVG文字列(数字列)処理で困っています(JavaScript) 107.099-47.839 でマイナスの前で区切るため 107.099,-47.839 とカンマを 挿入したく思っています。 ※特定の文字の前に文字を挿入 検索文字列Aを [0-9]-[0-9] として replace()後の文字列Bを指定したいの ですがググっても後者のBが分かりません。 どう書けば良いでしょうか?
"107.099-47.839".replace(/-/, ",-") "107.099,-47.839"
"107.099-47.839".replace(/([0-9\.]+)-([0-9\.]+)/, "$1,-$2") "107.099,-47.839"
ピリオドに\は要らない /([\d.]+)-([\d.]+)/,'$1,-$2'
A (?=-) B ,
752 :
747 :2013/11/12(火) 18:50:31.45
>>748-751 どうも。
>>750 さんの応用
数字列.replace(/([\d.]+)-([\d.]+)/g, '$1,-$2'); でOKでした
753 :
747&752 :2013/11/12(火) 19:24:43.93
すいません、 数字列.replace(/([\d.]+)-([\d.]+)/g, '$1,-$2'); では 例題の 107.099-47.839 とか 45.988-108.951 や 68.21-49.691 などは OKだったのですが、 -3.854-11.644 は区切られませんでした。 このため /(-*[\d.]+)-([\d.]+)/g と前の方に -* を付けたのですが変りません。 どうすべきでしょうか?
>>753 こっちではそれでうまく行ってるけど?
落ち着いてもう一度確認してみれば?
>>751 のを参考に別の記述をしてみた
/-*[\d.]+(?=-\d)/g,'$&,'
それと、もう他に条件はないの?
例えば、
999-999-999とか3つ続く場合とか、
-999-(-999)とか後の数値もマイナスだとか
特定の文字列に挟まれた場合のみとか、又は挟まれてない場合だけだとか?
あ、やっぱりダメだな 忘れて
756 :
デフォルトの名無しさん :2013/11/13(水) 02:35:08.04
s/(\d)-(\d)/$1,-$2/g
後出しでこれか・・はぁ・・・なんで残念回答者しかいないんだココ・・・ もういいよ、自分でなんとかしたほうがマシだよ・・・
あるシステムにデバイスのシリアルを登録するのですが、シリアルに半角スペースが入っていると正常に登録ができません。 正規表現が使えるようなので、質問ですが、下記のシリアルを正規表現で表記するにはどう表記すれば良いでしょうか。 <AA123456A 1A2B3C4D> 上記シリアルは二つの文字列間に半角スペースが12個含んでいます。 よろしくお願いします。
>>758 <AA123456A 1A2B3C4D>
という正規表現で、表現される。どこがどういう文字を取り得るかもないので、さっぱりだ。
人に聞いて済まそうとする奴はクズ。ここはム板だぞカス。
>>758 今ひらめいた。
<AA123456A\x20{12}1A2B3C4D>
こういうこと?
半角スペースを含んでて困ってるわけだから 多分スペース(と<>のくくり)をカットしたいんじゃないかと replace(/<([^ ]+) *([^ ]+)>/,'$1$2')
昔書いたプログラムは他人が書いたプログラムになると思えというけど、 一ヶ月前に書いたもので正規表現はさっぱりわからなくなるな。
>>763 正規表現に名前を付けないからそうなる。
単純に変数に代入するだけでも分かりやすくなるし、
正規表現を使った比較を関数にすればもっといい。
正規表現にもコメント入れる。
なぜか日本で使ってる人が少ないような気がするけど、
長い正規表現は複数行で書いてコメントを入れなさい。
そのための機能がちゃんと用意されてるんだから。
historyのワンライナーで何回か使うとコメントつけるけど、その作り途中のが出てくると混乱する。
>>763 ドキュメント無くても、テストコード書いとくと、後で使い方が分かっていいよ。
正規表現に限らないけど。
>>764 正規表現にコメント機能があるのは知ってるけど、改行入れても大丈夫なの?
>>763 私だけの現象かと、心配していました。少し安心、どうもありがとう。
xオプション使わずに長ったらしい正規表現を ドヤ顔で掲載しているサイトとかあるよな。
マトモに動くだけマシだけどな。期待通りに動作しないものを公開して 間違いを指摘されても修正しない奴とかいるから・・。(スキルが無いから間違いだと分からない)
○○はアウトだと言っている。 そこに誰かが△△を持ってきて○○はまだマシという。 この時、俺が思うのは、 ○○はアウト △△はアウトよりもさらにアウト マシという考え方はしない。
いつか鬱になる思考法だな
なんの根拠もないことを言われてもね。
とりあえずどうでもいい情報は書かなくていいぞ。
このスレにはどうでもいい情報しかないけどな
●Regular Expressionの使用環境 Perl(Emeditor) ●検索か置換か? 検索 ●説明 各行の1番目のAまでを検索したい ●対象データ お肉料理 お魚料理 料理 ●希望する結果 3行目の"料理"のみマッチさせたいです。 例えば (?<!お魚)料理 で検索すると、1行目のお肉料理の"料理"と、3行目の"料理"がマッチされてしまいます。 (?<!お肉)料理 で検索すると、2行目のお魚料理の"料理"と、3行目の"料理"がマッチされてしまいます。 上記を1行で書いて、前方にお肉、お魚が付いていない3行目の”料理”の単語だけマッチさせたいです。 ((?<!お肉)料理|(?<!お魚)料理) ((?<!お肉)|(?<!お魚))料理 のように書いてみましたが動きませんでした。 どなたかお分かりになる方教えて頂けるとうれしいです。よろしくお願いします。
^料理
>>780 申し訳ないです、説明不足になってしまいました。
対象データは例えば下のように文章内のいずれかの場所にあるので、行頭にあるとは限らないので ^料理 ではマッチしないことが多いです。
例:
おいしいお肉料理です
おいしいお魚料理です
おいしい料理です
上の場合では3行目の、おいしい料理です の "料理" のみマッチさせたいです。
説明不足で申し訳ありませんでした。
[^肉魚]料理
(?<!お肉|お魚)料理
(?<!お[肉魚])料理 (?<!お肉)(?<!お魚)料理
みなさんレスありがとうございます。みなさんのレスの通りでできました。 後読みの | の書き方はそのように書くのですね。勉強になりました。 どうもありがとうございます。
>>785 あれ、Regex++ってものになるんですかね?前にPerlと聞いてそちらのページトップに
>EmEditor は、Perl の正規表現構に基づいています
とあって今までPerlだと思ってました。。
自称perlってとこかな、まったくの別物。 perlの正規表現はこんなちゃちぃものじゃないよ。
まぁ例え本物のperlで動いていたとしてもテキストエディタ上ではおもちゃみたいなもんだけどな。
なるほどー、詳しくありがとうございます。
>>792 鬼車系の名前指定部分式呼出しやネストレベル付き後方参照ってPerl下位互換では無いよね。
どっちが上とかじゃなく、原型がPerlというだけでそれぞれ独立したものだと思ってて良いと思う。
鬼車はもう独立した感じだな。派生の1つとでも言うべきか。
798 :
デフォルトの名無しさん :2013/11/30(土) 16:23:01.11
abcxyczabc このテキストのabc以外(つまりxycz)に一致させたいんですが [^(abc)]+ こうやってもxyzしか返ってきません… 実現するにはどうしたらいいんでしょうか?
正規表現は「以下のルールを満たすもの」だから そういう満たさないものに一致させるのは原則として無理だよ。 まあ、逆転の発送と頑張り次第で、その場はなんとかなるけどね。
>>799 そうなんですか…
では頑張っていろいろ考えてみます。
ここはアホー知恵遅れか
([^a]|a[^b]|ab[^c])
>>798 [^(abc)] は (,a,b,c,) 以外の任意の一文字を示す。
括弧でくくったつもりかもしれないが無意味で、文字列ではないことに注意。
先読みとか戻り読みで調べてみたらいいかもしれない。
>>802-803 レスありがとうございます。
文字列否定は結構面倒なんですね。
勉強になります。
>>798 JavaScriptとかならsplit(/abc/)でいける。
「マッチした"範囲"」から「マッチしなかった範囲」を求めてもいける。
vim なら /^abc\zs.*\zeabc$
そう。工夫すれば、この場合はなんとかなる。 だが他の場合には使えなかったりするわけさ。
sed -e 's/\(abc\)//g'
文字列否定ってちょっと上でさんざんやってたやつじゃん。
>>635 の前後の ^ と $ を取ってxyzをabcにするだけだよ。
まあsplitが一番賢いな 次点でゼロ幅否定 一文字ずつ文字クラス否定を並べるのは猿レベル
811 :
デフォルトの名無しさん :2013/12/01(日) 10:33:21.35
http:// ○○○.com/dir/index.html
http:// ○○○.com/dir/
どちらが与えられた場合でも常に
http:// ○○○.com/dir に一致させるにはどうすればいいんでしょうか?
○○○\.com/dir(?=/|/index.html)
どうすればいいのか分からない奴は帰れ。おまえみたいな乞食が来るとこじゃねぇ。
●Regular Expressionの使用環境 Python3.3 ●検索か置換か? 置換 ●説明 均等割りにしているスペースを削除したい 一文字ずつスペースが入っている文字のスペースを削除したい ●対象データ あ い う え お かき くけ ここ ●希望する結果 あいうえお かき くけ ここ
816 :
デフォルトの名無しさん :2013/12/02(月) 17:36:15.17
>>814 s/([^\s])\s(?=[^\s]\s[^\s])/$1/g
丸投げ厨でしかもお願いしますの一言も無いとかw おまえら虫けらくらいにしか思われてないぞ
818 :
814 :2013/12/03(火) 09:48:22.21
>>816 ありがとうございます。
>>817 テンプレート読んでそのまま書き込んで投稿してしまいました。
申し訳ございません。
819 :
814 :2013/12/03(火) 10:27:41.88
>>816 python用に書き換えてみたのですが
import re
src = 'あ い う え お'
dst = re.findall(r'(\S)\s(?=\S\s\S)+', src)
dst
['あ', 'い', 'う']
「え・お」が抽出されないのですが
perlでは抽出されるのでしょうか?
820 :
814 :2013/12/03(火) 10:32:49.07
プラスつけてましたので修正しました import re src = 'あ い う え お' dst = re.findall(r'(\S)\s(?=\S\s\S)', src) dst ['あ', 'い', 'う']
m/\A\s?(?:\S\s)+\S?\z/ これがマッチしたら s/\s//g すればいい。
822 :
デフォルトの名無しさん :2013/12/03(火) 22:49:48.53
814だと結局均等割りの判定の仕方が曖昧なんだよね
ネタでしょ
824 :
814 :2013/12/04(水) 14:55:39.20
827 :
814 :2013/12/06(金) 08:44:56.87
●Regular Expressionの使用環境 分かりません ●検索か置換か? 検索 ●説明 風向は北のように1文字だったり西南西のように3文字だったりします。 風速も1〜2文字に変化します。 ●対象データ 観測場所風向風速気圧入道埼灯台西南西15m1016hPa艫作埼灯台南西10m ●希望する結果 入道埼 西南西 15m 艫作埼 南西 15m 正規表現というもの自体、昨日初めて知りました。 入門サイトを見ましたが概要が少し分かったような気がするだけです。 海上保安部の気象状況サイトから文字列を取得してデスクトップ上に表記させようと考えています。 他にも活用して行きたいので、これから勉強しようと思います。よろしくお願いします。
830 :
デフォルトの名無しさん :2013/12/07(土) 15:47:10.53
Javaです 艫作埼 南西 15m でなく 10mです
androidのアプリの仕様上、正規表現でいじるしかないのです。。
834 :
デフォルトの名無しさん :2013/12/07(土) 16:18:12.40
これがHTMLファイル解析するやつな Perlだけどだいたい読めるだろ 各ページのHTMLファイルはあらかじめダウンロードしておくこと use strict; my @weatherfile; my $wf; my @src; my $dat; my @buf; @weatherfile = ( "sasebo.html" , "tsushima.html" , "nagasaki.html" ); foreach $wf ( @weatherfile ){ open( FH , "<./$wf" ); @src = <FH>; close( FH ); $dat = join( "" , @src ); $dat =~s/(\r|\n)//meg; @buf = split( /<\/tr><tr>/ , $dat ); foreach( @buf ){ if ( $_ =~/"tdNum1 normal"/ ){ if ( $_ =~/<td.*?>(.*?)<\/td><td.*?>(.*?)<\/td><td.*?>(.*?)\s.*?<\/td>/ ){ print $1 . " " . $2 . " " . $3 . "m\n"; } } } } exit;
オナニーしてるの?
>>833 もし、そのサイトの仕様がいつも変わらないなら
URLでファイルにアクセスしてreadLineを繰り返して
startWithで欲しい行を見つけて
subStringで文字列取ればいいんじゃないの?
そのアプリを使ってる人に聞いたほうが早くね?情報小出しクンの相手はしたくないぞ。
つーかずっとデスクトップとか言い続けてたからみんなその流れで議論を重ねてきたのに いつの間にかアンドロイドアプリって方向になってる。
まあそう言わずに何か示してやれ
>>832 のような波高データがあったり、風向数値データが全部無い灯台があったら破綻するけど
<html><head><script>
var s="観測場所風向風速気圧入道埼灯台西南西15m1016hPa艫作埼灯台南西10m";
var pattern=/(?:観測場所風向風速気圧)?(.+?)(?:灯台|GPS局)((?:東|西|南|北)+)?(\d+m)?(?:\d+hPa)?/g
var newdata=s.replace(pattern,'$1 $2 $3<br>');
document.write(x);
</script></head></body></html>
840 :
839 :2013/12/07(土) 17:53:44.98
newdataはxに変更してね それと、アンドロイドのjavaで使える正規表現かどうかは知らない
そういえば安藤ロイドって見てる?
bashやzshで実装されている、正規表現のパターンマッチングについてです。 数字以外のときはエラーを出すというのをやりたいのですが [[ "$A" =~ ^[^0-9]+$ ]] && echo "not number" がうまく動作しません。 具体的には、0a1のように数字とアルファベットが混ざっているときに エラーが出ません。 [[ "$A" =~ ^[0-9]+$ ]] || echo "not number" [[ ! "$A" =~ ^[0-9]+$ ]] && echo "not number" だとうまくいきます。 上記の書き方ならうまくいくのですが、原因が知りたいので 最初のやり方でダメな理由を教えていただきたいです。
^[^0-9]+$ は数字以外だけの文字列の場合ヒット、数字混じりだと絶対ヒットしない
たぶんやりたいことはこうだろう。数字以外の文字が1文字でもあればエラーを出す。 [[ "$A" =~ [^0-9] ]] && echo "not number"
だだし対象が0文字の場合、エラーが出ない。[^0-9] にマッチする文字が1文字も無いため。
・演算子で否定 "$A" !~ ^[0-9]+$
>>843 ああ、なるほど。
私の書いた1番目と2,3番目は否定のかかる箇所が違うんですね。ありがとうございます。
集合と論理って難しい・・・。
正規表現テスターとかで試しながら作るいいよ。 未テストの正規表現をコードの中にブチ込んで動作確認するは面倒だろう。
>>848 ありがとうございます。
さっそくブックマークしました。
数値と特定の単位の間にスペースを入れるため ([0-9])TB タブ ¥1 TB タブ regex ([0-9])GB タブ ¥1 GB タブ regex ([0-9])cm タブ ¥1 cm タブ regex とやると例えば1tbや1CMも1 tbや1 cmなっています。 そこで([0-9])(TB) → ¥1¥2となると大文字小文字の変換はなくなりましたが 相変わらず1tbも1 tbとなってしまいます。 どうやって大文字小文字の区別をすれば良いのでしょうか?
>>850 Where are you fom? Japanese is a mess.
fom fom
ぐぐらん馬鹿はスルー
●Regular Expressionの使用環境 Becky! Internet Mail Ver.2 ●検索か置換か? 検索 ●説明 +0900を含まないものを検索したい ●対象データ +0900 +0500 +0630 ●希望する結果 +0500 +0630 よろしくお願いします。
855 :
854 :2013/12/10(火) 19:56:28.06
すみません、少し訂正です。 ●対象データ +0900 +0930 +0500 +0610 ●希望する結果 +0930 +0500 +0610
そのぐらいググれよ
「ない時」 にチェック入れろアホ
858 :
854 :2013/12/10(火) 23:27:28.77
>>857 貴方のおっしゃる「ない時」にチェックを入れたのでは希望の動作はしません。
>>854-855 は「+0900がない時」という条件ではないです。
>>854 \+([0-9]{0,3}|[0-9]{5,}|[^0][0-9]{3}|0[^9][0-9]{2}|09[^0][0-9])$
●対象データと●希望する結果を見る限りじゃ「+0900がない時」で希望の動作になるよね。
862 :
854 :2013/12/11(水) 14:56:35.05
>>859 先頭がマイナスの場合もありました。
>>854 を取り消して再度質問です。
●Regular Expressionの使用環境
Becky! Internet Mail Ver.2
●検索か置換か?
検索
●説明
+0900を除くタイムゾーンが含まれているかどうかを検索したいです。
※+0900が含まれている・いないにかかわらず+0900を除くものがある場合を検索。
●対象データ
※データ1-3はそれぞれひとまとまりです。
---データ1---
+0900
+0900
+0900
---データ2---
-1200
+0900
+0900
+0500
---データ3---
-1200
+0545
+0630
+1300
863 :
854 :2013/12/11(水) 14:57:24.22
続き。 ●希望する結果 ---データ2--- -1200 +0900 +0900 +0500 ---データ3--- -1200 +0545 +0630 +1300
騙りが出てきたのでトリップ?を付けておきます。
ここまでで
>>854 ,855,858,862,863,865以外は私ではないです。
※以降、別のトリップを付ける事はしません。
忘れた等いかなる理由の場合でも変更しません。
トリップつけようが「俺様の希望通りに動いたか否かだけ答えてやるから 俺様が満足するまでお前らが試行錯誤しろ」という態度に変わりはない
866が被害妄想ということはわかった
誰が見たって866は864だろ
バレたかー
日本語不自由なだけでも大きなハンデなのに、態度も悪いときたら人生苦労してるだろうな
>>862 (\-[0-9][0-9][0-9][0-9])|(\+1[0-9][0-9][0-9])|(\+0[^9][0-9][0-9])|(\+09[^0][0-9])
872 :
デフォルトの名無しさん :2013/12/11(水) 21:27:01.26
>>866 や
>>870 みたいな口だけで行動が伴わない男ってやだね^^;
相手の態度は関係なくてただ理解力不足なせいで回答できないくせに…
コテ付け忘れてるぞ
>>873 872はageて書いてるし文章も質問者とは異なる
明らかな煽り
>>873 ●Regular Expressionの使用環境
Vaka873
●検索か置換か?
置換
●説明
「コテ付け忘れてるぞ」を「答えられる頭がなくて悔しいです」に置換したい
●対象データ
コテ付け忘れてるぞ
●希望する結果
答えられる頭がなくて悔しいです
>>875 >>859 は量指定子が入っているから使えないけどな
だからありがとうもすみませんも言う必要はない
使える使えないじゃなくて回答してくれた事に対して、条件が変わった事に対してだろ……脳みそわいてるじゃないか……
まぁこういう質問する類でマトモな人格だったら騙りをスルー出来る筈ないし、質問含めて荒らしなんじゃねぇのコイツ。 荒らしに構うんじゃねぇよ。
881 :
デフォルトの名無しさん :2013/12/11(水) 23:17:42.19
>>879 が騙りをしていた本人だね^^;
荒らしに反応するのも荒らしみたいだからみんな
>>879 には触らないようにね
煽りの特定でも、さすがにここの住人は認識力も識別力も高いな
884 :
デフォルトの名無しさん :2013/12/12(木) 18:42:32.65
どなたかブラウザで正規表現のGREP使えるフリーのチェックツールって知りませんか? seikihyougenn.com ↑唯一使い勝手がいいウェブツール こちらで公開しているツールは正規表現のログや登録ができてリストをクリックすればさっと入力されて、置換も抜き出しもできて便利なんですが、 フォルダごとやファイルの複数選択ができません フォルダごとやファイルを複数選択ができて、このツールみたいな機能がついているのがほしいんです ブラウザが無理でしたら普通のツールでもいいです フォルダ選択できれば神ツールなんですが、、、
フォルダごとやファイルの複数選択の意味が分からないんだが ブラウザでそんなことできるわけないだろ
普通のツールでいいならgrepでいいじゃん。
>>884 firefoxならmigemo使っていたが。
最近はブラウザといえばウェブブラウザだが、ファイルブラウザか? ならsedでいいんじゃない。
そこであえてsakura editorですよ
ローカルで使える正規表現チェッカーが欲しいってことだろ でも良い物は見つからなかったよ
890 :
デフォルトの名無しさん :2013/12/12(木) 20:17:44.97
なんだ中の人が書き込んでたのか
正規表現チェッカーなるものを初めて知ったわ 実際に何か仕事をしてくれるわけではないチェック専用のツールというのが実に斬新だな どういう状況でそれが必要になるのかはさっぱりわからないが
ヒット部分、サブマッチ部分を表示してくれるから 自分でいちいち表示させなくて良いという手間を省いてくれるツール
サーバ経由でgrepなんて使ったらファイルの内容ダダ漏れじゃねぇか。 某国の諜報員さんですか?
896 :
デフォルトの名無しさん :2013/12/12(木) 20:49:22.75
>>893 ログ持ってるスレに書き込みがあったらわかるよなそれだけだ
>>893 アホかflashだろうがフォルダの内容はみれねーよ
898 :
884 :2013/12/12(木) 21:22:52.27
速攻で見つけるとかすごいなw
あっちでは紹介ついでの質問って感じに
なっちゃって質問が弱くなっちゃったし
過疎ってたのでこちらに書き込ませてもらいました
>>888 ツール見てもらったら分かると思うけど、
ひたすら正規表現やるのに楽できる機能が欲しいんです
ないでしょうかね?
>>889 いや、ローカルなのはさっきのツールもなので、
その使い勝手のGREP使えるツールがほしいんです
>>895 さっきのツールはFlash製で鯖経由なしのローカルで完結してるツールで
内容が漏れることがないって説明に書いてありましたよ
>>897 フォルダは無理でもファイル複数選択って無理ですかね?
ひたすら正規表現やる カッコイイ!!
900 :
884 :2013/12/12(木) 21:52:48.61
>>887 レスありです
firefoxでmigemo
調べてみたけどなんか違う、、、
このツールみたいに作った正規表現をリストに登録して
クリックですぐ使えるようにしたりできます?
今となっては必須と言っていい機能なのでこれがないと不便
あとマークだけじゃなくて抜き出しや置換できるのが欲しいです
串の抜き出しとかにも使ってるのでw
GREPほしい、、、いちいちファイル一つずつ開くのがめんどくさいんですよね、、、
>>892 中途半端な腕前だと間違いが頻発して繰り返し作業になるから
正解が出るまで繰り返せるチェッカー必須
>>899 正規表現できる人間は文字列の魔術師なんだってさwカッコイイ
ここの人はみんな人がいいねえ。正規表現の問題じゃないだろって思うんだが
え、宣伝?
スパイウェアって・・・
>>884 のテスターは良く出来てるよ、ロクでもないものかと思ったけどそうではなかった。
テスターというよりは実際に正規表現を使って文字列処理をするツール、という感じ。
正規表現を作る場ではなく使う場。
複雑な正規表現を作りたいときは1行の入力フォームの中で作るなんてとても無理。
ここの常連のようなガチな正規表現作者には向かない。
一般人には一行で十分かもだけどね。
>>884 が中の人ならReplaceStrToolを参考にするといいよ。
正規表現に改行やタブを入れながら作れるツール。このツール自体はJaneに特化してて
普通の正規表現作成には向かないが。
正規表現フォームを 一行 ←→ 全画面 の切り替え出来るようにって可能なのかな。 flashならフレーム移動とかで出来そうな気がする。
>884は>886を普通にスルーしているが、grepで事が足りるだろ。 フロントエンド位、LL言語で好きなように実装すればいいんだし。
置換も必要ならgrepじゃ不十分。最低限sedだろう。
grepとかファイル一括置換とかはvectorにあるフリーソフトで出来そうじゃん。
まぁ
>>884 のサイトの宣伝のダシに使っただけで用はないんだろうけど。
サイトの作者、ツイッターでも宣伝しとるね。 「作ったので良かったら使って下さい」って普通に宣伝すればいいのに なんでこんな感じの悪いことしにくるのか。
>>898 >
>>895 > さっきのツールはFlash製で鯖経由なしのローカルで完結してるツールで
> 内容が漏れることがないって説明に書いてありましたよ
ここで中の人と分かるね。本人だからこそ書けるレスだよこれ。
一般ユーザーならこんな説明を信用しない。
とりあえず (?=正規表現) の 正規表現 をいちいち消さないといけないのが面倒。 (?=) が挿入されて = の後ろにカーソルが移動するようにしたらどうか。
確かにな、リストから探して「正規表現」の部分を消すくらいなら手書きで 打ったほうが早い。
916 :
884 :2013/12/13(金) 18:40:44.51
ここは流れが速くていいなw
しかもプロが多いw
レベルの低い自分はちょっとスレ違いだったか、、、
とにかくファイルを複数選択できて作った
のを楽に再利用できるツールがほしいんです
一押しのツールないか教えてプロの人
>>906 うん、よくできてますよね
プロは何行もいるのか、、、
僕はとりあえず一行で十分です
>>907 レスサンクス
ダウンロードしてツール使ってみたけど
なんか違う、、、ファイルを複数選択できて、
再利用が楽にできて
抜きだしもできるやつがほしいんです
>>909 自分で作れたら聞いてないです
もっと楽に再利用できるのがほしいんです
あとできれば抜きだしもほしい
917 :
884 :2013/12/13(金) 19:07:39.71
>>911 ブラウザ以外にもいろいろ調べたけど
いいのがなかった
あるなら教えてほしいです
>>912 そうなのか、、、
そのわりにカウンターが全然回ってないw
いいツールなのにな、、、
>>913 んな言い切られてもwww
て笑えたけどちょっと笑えないわ
一理あるかも?
>>914 >>915 うん、めんどいです
だからデータ修正しました
先読み、戻り読みは直打ちめんどいです
913で気になったんですけど
ローカルで完結って
やたら強調してるし、、、これあやしいですか?
明記して嘘だったら犯罪でしょ?
詳しい人なら分かりませんか?
見られて困ることしてないけど
おまえが一番良く知ってるだろ、文体でバレバレなのが分からないのは本人だけ。
>>917 自作xmlをうp出来るうpローダーを用意したらどうか。
counter.cgiが動くってことはうpロダも接地出来るっしょ。
↑アフィで稼ぎたいなら必須だぞ
前もマイナスステマしてたやつか。
923 :
884 :2013/12/13(金) 20:10:54.18
打てば響くなwこのスレ
>>920 レスサンクス
これがプロか、、、
でもすごいけど違うんです
こういうのできなくてもいいから
楽にできるやつがほしいんです
ファイル複数選択できてね
いや、あんたがいるかいらないかじゃなくてさ、あんたのサイトのもこういうこと 出来るようにしてくれって言ってんだよ。しないならイラネ。 ガチ勢の有名人も使えるようなツールにすればアフィが捗るぞ。有名人が宣伝してくれるからな。
インデントするツールは普通の正規表現の作成には向いてないからあんたのサイトが インデント対応するなら乗り換えるよ。インデントされてれば見やすいままコードに突っ込めるし。 /xを使ってね。
>>925 それいいかも。
xのチェックボックスがあるテスターは多いけど
実際にxの書式で使えるテスターはなかなか
ない。
一行だと
>>16 みたいなの作るときイライラしそう
俺はテキストエディタで作ってるからテスターなんてノーサンキュだけど
それよか一行だとxある意味なくね?xのテスト出来ねーじゃん
半角スペ入れてテストするとか?
930 :
884 :2013/12/13(金) 22:16:01.39
だからそんな機能は僕はいらないってのに、、、 別に中の人だと思われてもおもしろいから スルーしてたけど会話にならないな、、 ずいぶん前にメール送ってみて、 今も音沙汰ないし 手っ取り早くツール見つけたかったけど サクラエディタとの使い分けしかないかな、、めんどい
バッチファイルという手もあるぞ。検索ワードごとにバッチファイルを用意する。 こういうことが出来る程度のスキルがあればだけど。
ツイッターでスパム並みに宣伝しまくったのにカウンターが1000って・・ギャグだな。
>>901 そりゃまぁFlashのセキュリティホールから任意コード実行系のバグを使えばそりゃ不可能ではないだろうけど…
Webサイト上のコンテンツの一部に過ぎないFlashがローカルファイルを任意に閲覧とか駄目に決まってるだろ。
ユーザが明示して許可した範囲のアクセスか、Webサイトじゃなくアプリケーションとして動かすかしかなくね?
HTML5 FileAPIにしたって制限ガチガチ。
.NETでファイルアクセス用のCOMを作成すればいいじゃん まあ全部作るんなら言語は何だっていいんだけど
ブラウザで正規表現使いたいってどんな内容のファイルなんだろ。 社外秘のファイルの置換がしたいとかなら笑えるんだが。 flashに読み込むということはそれを外部に送信されても全然不思議じゃない状況になる。 POSTメソッド呼び出すだけだからね。それが分かってればブラウザ上で使いたいなんて普通は思わない。
ブラウザの中で動くオモチャなんぞを便利って言ってる奴は普段何を使ってるんだろう
くまーく 正規表現マスター
でググると痛い発言がてんこもりだな。
>>884 の
「唯一使い勝手がいいウェブツール」
~~~~
も痛いね、他人とは思えないね、すごい偶然だなぁ。
939 :
884 :2013/12/14(土) 21:25:11.40
>>931 なんかあきらめかけてたのに
レスサンクス!
これこれ!こういうやつです!
ありがとう、だけど、ごめん、、、
そのページのものはもう見てるんだ
>>933 ほんとそれ!
だから応援してるw
>>934 なるほど、やっぱり複数選択は無理なんですね
こういうことをスラスラ言えるレベルの高さがほしい
>>932 >>935 そんなスキルあったら聞いてないです、すいません
>>936 なるほど、ちょっと心配になりました
けどプロは普通じゃないと思います
変な送信してないかとかを調べられないんですか?
940 :
884 :2013/12/14(土) 21:47:43.89
>>937 そのオモチャより便利なのが
見つからないから聞いてるんです
サクラエディタも使ってるけど不便です
普段使ってるプロのツールを教えてほしいです
使いこなせないかもしれないけど
>>938 あちこち探しても見つからないから
ちょっと煽って、いいものを紹介してもらいたかったw
例を見せないと知ってるのとか
ほしいのと違うもの紹介されそうだからね
やっぱりここは全体的にレベルが高いですね
ここでは自分のレベルが低くて困る
レスのつく良スレだけどスレ違いだったかな
はい、次の患者さんどうぞ
馬鹿には無理
>>920 これxyzを含まない正規表現のつもり?
y| が余計でこのせいで y[^xz] が意味をなさなくなってる。
階層表示使ってみた。これだけは便利だな。これだけはな。
ざっくり言うと、.shファイルみたいに書けますよってことか awkじゃあるまいしスペース量で見た目を分けた方がいいや
他人が書いた正規表現の解読するときは使えるかも知れん。そんくらいだな。
4個っすね、アレ
荒らしの立てた重複スレは次スレではない。
953 :
Regular Expression(正規表現) Part12 :2013/12/16(月) 20:04:37.05
このキチガイまだいたのか・・
956 :
566 :2013/12/17(火) 00:35:00.75
次スレは
>>951 な。重複スレ立てても俺はそっちには行かないから。
マトモな解答出来るのが俺しかいないから重複スレは閑古鳥になるだろうよ。
トリップ付けとくか・・
キチガイによるスレ潰しの一例 □スレの私物化
タイトルを変えた理由は理解しているが Regular Expressionなんて表現は日常ほとんど使わないのではないか。
>>960 正統性を主張するのは構わないが、せめてタイトルだけは変えて欲しかったが
立ててしまったのだね。
「正規表現」でスレッド検索できないなら問題だろうけど、検索できるから良いだろう。
向こうのスレ荒らしてる奴、
>>575 の最後の2行を読め。
見に行ったけど荒れてなかった件について
他人に当り散らすのはやめろ。正規表現道を極めたいなら人間的にも成長しろ。 感情をコントロールしろ。周りの人間を威嚇するな、バカ犬じゃあるまいし。
こっちは、煽り道を極めようと必死なんだ。 煽り道をなめんな。
これは人格障害の一種だね。ストーカーやDVと同じタイプの精神病。 周りが自分の思い通りにならないと暴走する。早めに精神病院に行くことをおすすめする。
>>969 あー、お前が何を言っても
お前の思い通りにはならないから
諦めとけw
やっぱ精神病なのか、スレタイ変えたりおかしいとは思ってた
見ようかと思ったけどタイトルで荒らしの立てた重複スレだと分かった レッテル貼りと宣伝乙です^^
うわ〜、ストーカーって初めて見た
>>975 ねぇねぇ、いつごろからそういう性格になったの?
参考までに教えてくれないかな。
>>975 お父さんとお母さんとは上手くいってた?
特にお母さんとの関係は?
>>975 人間関係はどう?自分だけ孤立したりしてない?
うめ
>>975 元々は漢字名の正規表現 Part** だったんだよ。Part11からかな。この名前に
突然置き換わったのは。
>>977-979 お前そんなに酷い環境で育ったのか。
夜中の2時過ぎになっても眠れなくてここに書き込んで発散するとか
お前がいくら荒らしとはいえさすがに同情するわ。
可哀想に。
こういう病気の人間は自尊心が足りなく、足りない分を補うために他者を支配しようとするそうだ。 ストーカーやDVはそのための行為。 スレタイや天ぷら改変でスレを支配してみじめな自分を満たそうとしたんだろう。
なるほどね、このスレタイは
>>1 のみじめさで出来てるのかwwwww
だったらこのままでもいいやwwwwwwwww
ざまぁあああああああああああああwwwwwwwwwwwww
【精神病】 Regular Expression(正規表現) Part13 【みじめ】 次々スレはこれにするわw
向こうで荒らしてる奴がこっちでも荒らしてるな そうやって自演で煽れば対立構造にでもなると思ってるんだろうか
向こうのスレがあがってるじゃねーか、早くストーカーしにいけよキチガイw
おいストーカー、早くしろよ
うめ
精神障害者が知的障害とか言っててワロタ
おいストーカー、早くしろよ
うめ
うめ
997
埋め
999
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。