正規表現 Part8
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2011/03/26(土) 00:38:06.48質問する場合は実装言語や処理系ソフトウェア名を示しておくと話が早いです。
正規表現 Part7
http://hibari.2ch.net/test/read.cgi/tech/1268979408/
0002デフォルトの名無しさん
2011/03/26(土) 01:09:51.73正規表現メモ
http://www.kt.rim.or.jp/~kbk/regex/regex.html
Perl正規表現雑技
http://www.din.or.jp/~ohzaki/regex.htm
Regular Expression(Riue ちゃんの正規表現講座)
http://www.sixnine.net/regexp/
正規表現パズル
http://oraclesqlpuzzle.hp.infoseek.co.jp/regex/
詳説 正規表現
http://www.oreilly.co.jp/books/4873111307/
正規表現プログラミングFAQ
http://capslockabcjp.kitunebi.com/faq.html
JScript 正規表現の概説
http://msdn.microsoft.com/library/ja/script56/html/js56reconIntroductionToRegularExpressions.asp
.NET Framework 正規表現言語要素
http://msdn.microsoft.com/library/ja/cpgenref/html/cpconregularexpressionslanguageelements.asp
【 初心者 】 正規表現 【 入門 】
http://funcchan.blog16.fc2.com/
0003デフォルトの名無しさん
2011/03/26(土) 01:10:52.77[UNIX板] 正規表現
http://pc12.2ch.net/test/read.cgi/unix/1039165754/
[WebProg] 正規表現道場
http://pc11.2ch.net/test/read.cgi/php/1168450843/
◆前スレ
[1] http://pc8.2ch.net/test/read.cgi/tech/1062152374/
[2] http://pc8.2ch.net/test/read.cgi/tech/1131028296/
[3] http://pc11.2ch.net/test/read.cgi/tech/1156413899/
[4] http://pc11.2ch.net/test/read.cgi/tech/1186030400/
[5] http://pc12.2ch.net/test/read.cgi/tech/1212498448/
[6] http://pc12.2ch.net/test/read.cgi/tech/1241537764/
[7] http://hibari.2ch.net/test/read.cgi/tech/1268979408/
0004デフォルトの名無しさん
2011/03/26(土) 01:11:41.35●正規表現の使用環境
Java1.5
●検索か置換か?
検索
●説明
各行の1番目のAまでを検索したい
●対象データ
ABCA
BCAA
CABA
●希望する結果
ABCA
^
BCAA
^^^
CABA
^^
0005デフォルトの名無しさん
2011/03/26(土) 13:27:53.720006デフォルトの名無しさん
2011/03/27(日) 17:45:43.260007デフォルトの名無しさん
2011/03/27(日) 18:17:41.22JavaScript
http://regexpal.com/
Ruby
http://www.rubular.com/
.NET
http://regex-recipe.frozenlib.net/
PHP
http://www.rider-n.sakura.ne.jp/regexp/regexp.php
0008デフォルトの名無しさん
2011/03/27(日) 19:28:21.14perlのってないですかね
0009デフォルトの名無しさん
2011/03/30(水) 11:49:01.94●正規表現の使用環境
EmEditor
●検索か置換か?
置換
●説明
鍵カッコ内の文字列と前方の文字列を入れ替えたい。
●対象データ
AAA「BBB」/CCC「DDD」/EEE「FFF」…YYY「ZZZ」
●希望する結果
BBB「AAA」/DDD「CCC」/FFF「EEE」…ZZZ「YYY」
0010デフォルトの名無しさん
2011/03/30(水) 16:26:48.54試してないけど
検索: ([^「」/]+)「([^」]+)」
置換: \2「\1」
0011デフォルトの名無しさん
2011/03/31(木) 09:04:29.54ありがとうございます!
0012デフォルトの名無しさん
2011/04/03(日) 22:46:00.44秀丸(複数行置換)
●検索か置換か?
置換
●説明
上2行は条件付けの為に検索時に必要になり、置換時は style=0 のみ style=2 へ
変更したいです。
●対象データ
name=Relative
color=#000000
style=0
●希望する結果
name=Relative
color=#000000
style=2
********************************************
下のようにnameとcolorは値が変わるので.*としているのですが、
置換文の置換時に変更しないという書き方が分かりません。
分かる方おりましたら教えて下さいませ。
[検索条件]
name=.*
color=.*
style=0
[置換文]
name=
color=
style=2
0013デフォルトの名無しさん
2011/04/03(日) 23:22:18.38置換 name=\1\ncolor=\2\nstyle=2
0014デフォルトの名無しさん
2011/04/03(日) 23:37:55.17無事出来ました、どうもありがとうございます!
0015デフォルトの名無しさん
2011/04/07(木) 17:46:48.45マッチした文字列を、マッチした文字列の最初の一文字で置換したいです。
たとえば、
りんご
ごりら
ぼーる
だと、
り
ご
ぼ
に置換したいです。
置換前の正規表現と、置換後の正規表現はどのようにすればよいのでしょうか?
0016デフォルトの名無しさん
2011/04/07(木) 18:00:09.970017デフォルトの名無しさん
2011/04/07(木) 18:02:48.07アドオンみたいなのでいけるようになります。
0018デフォルトの名無しさん
2011/04/07(木) 19:57:20.75置換 \1
0019デフォルトの名無しさん
2011/04/10(日) 01:24:00.50よろしくお願いします。
●正規表現の使用環境
VB.NET2003
●検索か置換か?
検索
●説明
果物の名前を検索したい
●対象データ
箱の色・箱A/緑、箱B/橙、箱C/黄、箱D/赤
箱の中身・箱A/メロン、箱B/みかん、箱C/バナナ、箱D/りんご
箱の大きさ・箱A/100cm、箱B/120cm、箱C/140cm、箱D/160cm
●希望する結果
メロン
みかん
バナナ
りんご
0020デフォルトの名無しさん
2011/04/10(日) 01:46:27.240021デフォルトの名無しさん
2011/04/14(木) 23:47:33.90「%20」や「%26」や2バイト文字を含むURLで動作しないので
例:http://lh5.ggpht.com/_yIvKcqI3wVA/TabN39xH8HI/AAAAAAAADbA/JAurXpYyStQ/s128/open%20mouthed%20scared%20cat.jpg
動作するように、ご教授お願います
http://lh5.ggpht.com/_yIvKcqI3wVA/TabN39xH8HI/AAAAAAAADbA/JAurXpYyStQ/s128/open%20mouthed%20scared%20cat.jpg
http://lh5.ggpht.com/_yIvKcqI3wVA/TabN39xH8HI/AAAAAAAADbA/JAurXpYyStQ/open%20mouthed%20scared%20cat.jpg
最初以外の[\w-]を[^/]に変える
あとは考えてくれ
0023デフォルトの名無しさん
2011/04/15(金) 15:51:46.12var elems = url.split(/\//); /* このあたりがそこはかとなくスレの趣旨に合致 */
var filename = elems.pop(); elems.pop(); elems.push(filename);
var new_url = elems.join('/');
0024デフォルトの名無しさん
2011/04/16(土) 16:39:05.13C#.Net
●検索か置換か?
検索
●対象データ
data
(data
data)
(data)
Xdata
dataY
●希望する結果
data
dataが()XY以外と隣接している場合は検索を一致させたくないのですが、
それが中々できません。
よろしくお願いします。
002524
2011/04/16(土) 17:12:20.27dataの部分をグループにまとめたいです
0026デフォルトの名無しさん
2011/04/16(土) 20:41:22.03((?<=[()XY])data|data(?=[()XY])|(?<=[()XY])data(?=[()XY]))
一番上のdataも含めるなら
((?<=[()XY])data|data(?=[()XY])|(?<=[()XY])data(?=[()XY])|^data$)
追記はよくわからん
0027デフォルトの名無しさん
2011/04/16(土) 21:58:05.25とは違うのか?
0028デフォルトの名無しさん
2011/04/16(土) 22:12:13.20>()XY以外と隣接している場合は検索を一致させたくない
ということなので()XYに隣接してるdataが引っかかるようにしといた
0029デフォルトの名無しさん
2011/04/16(土) 23:02:36.31現在出先なのでまだ確認できませんが、家に帰ったらやてみようと思います。
>>28
data
(data
dataY
などは一致させたいのですが、
bigdata
などは一致させたくないのです
分かりづらくてすいません
0030デフォルトの名無しさん
2011/04/17(日) 13:54:16.70特定のURLは"mt=8"と"hibari"が含まれたURLです
[^(mt=8)(hibari)]
と試しましたが駄目でした。どのようにすればよいのでしょうか?
0032デフォルトの名無しさん
2011/04/17(日) 18:00:16.76^((?<!mt=8).(?!mt=8))*$
^((?<!hibari).(?!hibari))*$
正規表現を複数登録できるならこの2つでいける
なんとか1つにまとめようとしたんだけど無理だったわ。
1つにまとめれる人いたらやり方教えて
二つを併用しようとしたら全部のレスが消えてしまったのですが、上の
^((?<!mt=8).(?!mt=8))*$
だけでも絶大な効果だったので下のは諦めることにします
有難うございました!
0034デフォルトの名無しさん
2011/04/17(日) 20:52:05.01(Perl正規表現雑技を見ながら)
両方の文字列を共に含まないなら
^(?:(?!mt=8.*hibari)(?!hibari.*mt=8).)*$
どちらか一方でも含まないなら
^(?:(?!mt=8)(?!hibari).)*$
でいけるっぽい
003532
2011/04/17(日) 21:28:07.66量指定子って先後読みには使えないと思ってたけど
使えないのは後読みだけなのか。間違って覚えてた
先後読み両方使うより先読みだけのほうがスマートだな
勉強になった。ありがとう
0038デフォルトの名無しさん
2011/04/19(火) 02:20:36.99[^/]でいけました
ありがとうございましたm(_ _)m
0039デフォルトの名無しさん
2011/04/21(木) 21:50:15.99C:\work\20110410dsk30.jpg
C:\work\2011419100002.jpg
D:\My Pictures\保存画像\カレイドスター\e2498f54.jpg
D:\My Pictures\保存画像\プリキュア\03cde8e1.jpg
D:\My Pictures\保存画像\プリキュア\10mai458354.jpg
こう言うフルパスからファイル名だけ抜き出したいのですが、「.*\\」とすると最後の10mai458354.jpgだけしか残りません。
どうすれば、1行毎に、行頭からその行の最後の\記号までを指定できるのですか?
0040デフォルトの名無しさん
2011/04/21(木) 22:11:05.31それはともかく使ってる処理系かエディタの名前書いたほうがいいよ
バックスラッシュがややこしい
0041デフォルトの名無しさん
2011/04/21(木) 22:15:07.07バックスラッシュがややこしいとは?
0042デフォルトの名無しさん
2011/04/21(木) 22:16:47.46>>40
どうぞ
http://www.egyptian.jp/goods/rosetta-l.JPG
0043デフォルトの名無しさん
2011/04/21(木) 22:17:03.210044デフォルトの名無しさん
2011/04/21(木) 22:17:49.21どう考えてもURLからしてロゼッタストーンです
本当にありがとうございました
0045デフォルトの名無しさん
2011/04/21(木) 23:07:35.97うーん…
ピリオドが一文字を表してて、その繰り返しだからアスタリスクを使ったんだけど。
[^\n]は、[]の中は先頭が改行じゃ無いって事だとは解るんだけど。
[]で囲むのと、どれかに一致で、先頭が改行の時は除外するって事になるのかな。
最初、ピリオド・アスタリスクとしていたけど、アスタリスクの意味を理解して無かったって事かな?
0046デフォルトの名無しさん
2011/04/21(木) 23:29:26.29文字クラスの理解が怪しい感じかな
http://ja.wikipedia.org/wiki/%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE#.E6.96.87.E6.B3.95
ところで>>42で希望通りの動作になった?
0047デフォルトの名無しさん
2011/04/21(木) 23:30:45.33.は任意の文字で通常は改行は含まれないがオプションなどで動作が変わる
.*は欲張りなマッチとか言われてて、とりあえず取れるとこまで進めてから
バックトラックしながらその後の条件があれば取捨選択していく
0048デフォルトの名無しさん
2011/04/21(木) 23:50:00.45あ、スミマセン。
実験したのですが、何もヒットしないでした。
使ってる状況なんですが、TeraPadと言うテキストエディタの外部ツールのTpRegExpなんです。
なんか、正規表現が、こんなに方言化してると思わず、状況後出しに成ってるのが、申し訳ないです。
0049デフォルトの名無しさん
2011/04/22(金) 00:16:11.73\f[^\n]*\\
一応リファレンスは調べてみたけど試してはいない。
これでだめだったら、いっそのこと別のエディタにしてしまったほうが楽な気がする
こっちの環境(Mery)だと
.*\\
でも希望通りの動作になるよ
0050デフォルトの名無しさん
2011/04/23(土) 05:36:55.82望んだ動作に成りました。
この外部ツールが曲者なのかな。sakuraエディターだと、.*\\で望みの動作しました。
どうもでした。
毎回呪文を打ち込むのも面倒だなと、VBスクリプトでやろうとしたんだけど、挫折しました。
0051デフォルトの名無しさん
2011/04/25(月) 08:30:22.420052デフォルトの名無しさん
2011/05/06(金) 19:40:46.16php 4.4.9 だとマッチしますが、php 5.3.5 だとマッチしません。
何か原因がわかればご教示ください。よろしくお願いします。
0053デフォルトの名無しさん
2011/05/06(金) 20:58:11.44memory_limit は php5は 128M に、php4 は 32M にしています。
>>52 の OS は WindowsXP Home SP3 です。
0054デフォルトの名無しさん
2011/05/06(金) 22:05:22.990055デフォルトの名無しさん
2011/05/08(日) 11:41:05.08一応 php.ini です。 http://www1.axfc.net/uploader/File/so/62697
>>52 の aaaaaaaaa の部分を短くするとマッチします。
なんでかな…
0056デフォルトの名無しさん
2011/05/09(月) 17:22:10.19対象の文字列を減らすとマッチするのはこちらでも再現した。
なんだろうねぇ。。。。
0057デフォルトの名無しさん
2011/05/09(月) 17:41:43.51http://jp.php.net/manual/ja/pcre.configuration.php#ini.pcre.backtrack-limit
0058デフォルトの名無しさん
2011/05/09(月) 17:51:47.67pcre.backtrack_limit=200000 で動くようになりました。
0059デフォルトの名無しさん
2011/05/09(月) 19:02:42.70なるべくその設定を変更せずにすむように心がけよう。
0060デフォルトの名無しさん
2011/05/11(水) 09:47:04.06●正規表現の使用環境
PHP 5.2.9 (XAMPP 1.7.1)
●検索か置換か?
検索
●説明
入力文字が+、-、数字以外ならエラーを返す
●コード
preg_match("/^[+|-]*\d+$/g", $string)
(1行ごとに処理するので、/mは不要です)
●希望する結果
+100→○
-488→○
1024→○
*300→×
/200→×
Aaaa→×
ああ→×
0061デフォルトの名無しさん
2011/05/11(水) 10:06:04.62(\+|\-)[0-9]
0062デフォルトの名無しさん
2011/05/11(水) 11:11:25.84> (\+|\-)[0-9]
こちらを使用しました。意図した通りになりました。
正規表現に関係なく、素直に書いてみることが大事なんだと認識しました。
ありがとうございます。
0063デフォルトの名無しさん
2011/05/11(水) 11:13:41.25でもいいの?
0064デフォルトの名無しさん
2011/05/11(水) 12:38:21.59とりあえず (\+|\-) なんて書くくらいなら [\+\-] でいいだろ……
* 小数点や指数表記を考えない
* 最上位の桁が 0 の場合ははじく
* 符号のみの場合もはじく
って感じなら ^[\+\-][1-9]\d*$
0065デフォルトの名無しさん
2011/05/11(水) 13:17:27.58>> (\+|\-)[0-9]
>こちらを使用しました。意図した通りになりました。
1024 → × になりませんか?
0066デフォルトの名無しさん
2011/05/11(水) 13:21:49.740067デフォルトの名無しさん
2011/05/11(水) 14:11:09.38●正規表現の使用環境
PHP 5.2.9 (XAMPP 1.7.1)
●検索か置換か?
検索
●説明
入力された文字列のエラーチェックで使用します。
入力文字が+、-、数字以外ならエラーを返します。
●正規表現を確認したサイト
HiFi Regex Tester
http://www.gethifi.com/tools/regex
●コード
if( !preg_match("/^(\+|\-)?[0-9]+$/", $string) ) {
エラー文生成
}
(1行ごとに処理するので、/mは不要です)
●希望する結果
○:エラーではない、×:エラーとなる
0→○
+0→○
-0→○
+100→○
-488→○
1024→○
/200→×
Aaaa→×
ああ→×
12+1→×
5-10→×
0068デフォルトの名無しさん
2011/05/11(水) 14:17:50.19^[-+]?\d+$
0069デフォルトの名無しさん
2011/05/11(水) 15:34:39.84希望する結果にならなかった例を挙げない人だよね。
0070デフォルトの名無しさん
2011/05/11(水) 15:59:24.60情報の小出しになっていることは認めます。
0071デフォルトの名無しさん
2011/05/11(水) 23:07:49.3601→?
0072デフォルトの名無しさん
2011/05/22(日) 14:18:14.06122ch345673ch89
この文字列から2chと3chの間の文字だけを取得したいです
0073デフォルトの名無しさん
2011/05/22(日) 14:25:18.65実際にどう抜き出すかは使ってる言語やツール次第
0074デフォルトの名無しさん
2011/05/22(日) 14:32:36.53(?<=2ch).*?(?=3ch)
0075デフォルトの名無しさん
2011/05/22(日) 14:32:52.41VB.NETです
0076デフォルトの名無しさん
2011/05/22(日) 14:54:38.68正規表現は>>74のを使わせてもらった
using System;
using System.Text.RegularExpressions;
...
Match m = Regex.Match("122ch345673ch89", @"(?<=2ch).*?(?=3ch)");
Console.WriteLine(m);
34567
0077デフォルトの名無しさん
2011/05/22(日) 15:05:07.94Imports System.Text.RegularExpressions
Module Module1
Sub Main()
Dim m As Match = Regex.Match("122ch345673ch89", "(?<=2ch).*?(?=3ch)")
If m.Success Then
'隊長!発見しましたぞ!
Console.WriteLine(m.Value)
End If
End Sub
End Module
0078デフォルトの名無しさん
2011/05/22(日) 15:50:24.680079デフォルトの名無しさん
2011/05/23(月) 10:39:22.11という感じの文字列からcccの値dddを取得したいです。
dddは可変でその部分にはセミコロンとカンマは入ることはありません。
(セミコロンは区切りとしては使いますが値としては使いません。)
cccは最後に書かれてる場合もあり、その場合は、
上記のeee=fffのように最後にセミコロンがつきません。
そこで正規表現なんですが、
ccc=(.*?;|[^;\,]+$)
という感じにしました。
後方参照で()内の部分を取り出したとき、
ccc=ddd;のときは、「ddd;」といった感じにセミコロンつきで取得され、
ccc=dddのときは、「ddd」といった感じにセミコロンなしで取得されます。
ccc=ddd;のときでもセミコロンなしで取得したいのですが、
正規表現のみで可能でしょうか?
0080デフォルトの名無しさん
2011/05/23(月) 11:16:21.88だけじゃだめなのかな?
先読み使えばこう書けるけど
ccc=(.*?(?=;)|[^;,]+$)
0081デフォルトの名無しさん
2011/05/23(月) 11:31:28.50ありがとうございます!
>ccc=([^;,]*)
これでとることができました。
正規表現難しいです><
0082デフォルトの名無しさん
2011/05/23(月) 13:48:15.55「\x○○」のところ。
str=@"[^\x00-\x22\x27-\x2D\x3A\-\x3B\x3F\x5B\x5D\x5E\x60\x7B-\x7D\x7F]+" ;
0083デフォルトの名無しさん
2011/05/23(月) 13:55:18.150084デフォルトの名無しさん
2011/05/24(火) 08:08:29.88ようするに[0-9a-zA-Z]+と同等なことをしたいのですが
[\w^_]+とかでは動きませんでした
どう書くのが正しいのでしょうか?
[0-9a-zA-Z]+でもいいのですが後学のために教えてください
0085デフォルトの名無しさん
2011/05/24(火) 08:13:54.23008684
2011/05/24(火) 08:17:33.28[\w][^_]+でたぶんいけました
スレ汚しすみません
0087デフォルトの名無しさん
2011/05/24(火) 08:22:48.26場合によっては正しく判定してるように見えることもあるけど
本質的には正しくない
0089デフォルトの名無しさん
2011/05/24(火) 08:58:22.69それ以外の書き方をしようとするのがそもそもの間違いだ
初心者の頃って、短く書くことが良いことで正しいとか勘違いしてる奴も多いけど
短く書くより分かりやすく書いた方が絶対いいから
まあ[0-9a-zA-Z]+を[a-zA-Z\d]+とするくらいなら、分かりやすさを損なってないからいいけどね
先読み、後読み使えば、\wから_除外したものの連続って表現も出来るけど
この程度のことに先読み、後読み使うなんて余りにも無駄すぎるので、
本当に分かってる奴は[0-9a-zA-Z]+か[a-zA-Z\d]+を使う
とりあえず、メタ文字として用意されているもの以外の文字集合はベタ書き、これ基本な
「5以外の数字」とかも\dから5を除外するのではなく[0-46-9]が一番良い
0090デフォルトの名無しさん
2011/05/24(火) 09:43:43.83文字クラスのintersection(&&)が使える処理系なら [\w&&[^_]]+
0091デフォルトの名無しさん
2011/05/24(火) 10:28:01.220092デフォルトの名無しさん
2011/05/24(火) 11:15:05.61分かりやすく書いた方が良いというアドバイスをしているのでは?
0093デフォルトの名無しさん
2011/05/24(火) 11:25:02.36なんで0-9が先にこないのか不思議。
n進数表記でも0からだし、ASCII char codesは0-9A-Za-zの順番だし、
なんか理由とかあるのかな?
0094デフォルトの名無しさん
2011/05/24(火) 12:21:01.67英数字
0095デフォルトの名無しさん
2011/05/24(火) 12:57:46.19\Wがあるならこんなふうに書けるけどちょっと分かりづらいよね
0096デフォルトの名無しさん
2011/05/24(火) 15:22:48.24まさに逆の発想
0097デフォルトの名無しさん
2011/05/24(火) 16:51:40.00読解性犠牲にして短くしてもしょーがない。
誰が見ても、人目で何を意味してるか解る、それが一番大事。
0098デフォルトの名無しさん
2011/05/24(火) 17:21:52.95そういうもんだし
そもそも読みやすさを求めるなら規約で正規表現禁止にするわ
0099デフォルトの名無しさん
2011/05/24(火) 17:51:31.12君にとってはそうなのかもしれないし、個人的にどう思ってようと勝手だけど
世間的にはそういう認識ばかりじゃないので、主観で断定するのは良くない
0100デフォルトの名無しさん
2011/05/24(火) 17:56:10.91実際コーディング規約で禁止にしてるところは多い
理由は複雑だから
0101デフォルトの名無しさん
2011/05/24(火) 17:58:40.47やめちまえ。
0102デフォルトの名無しさん
2011/05/24(火) 17:59:15.170103デフォルトの名無しさん
2011/05/24(火) 17:59:25.70見やすくする方法は色々あると思うけどな
0104デフォルトの名無しさん
2011/05/24(火) 18:44:42.90[^a-zA-Z_0-9]だと「いろは」とか「阿伊宇」にもマッチするのに
\Wだと「いろは」とか「阿伊宇」にマッチしない
ということはと思って試してみたら、
[^\W_]+が、「いろはabc阿伊宇」の全体にマッチした
[a-zA-Z0-9]+だと、当然「abc」にしかマッチしないけどね
まあ俺が作ったプログラムではなく、他人が作った物での話だけどね
0105デフォルトの名無しさん
2011/05/25(水) 18:14:45.81文字列解析やif-else switch文でダラダラ書いたほうが、
コード量を稼げるからという裏向きの理由もあるんだな。
0106デフォルトの名無しさん
2011/05/25(水) 20:16:36.230107デフォルトの名無しさん
2011/05/25(水) 22:37:29.83ひどいなそれは…
0108デフォルトの名無しさん
2011/05/25(水) 23:22:56.81マッチさせたい対象文字列が18xgameとあった場合に、
fps18xgameというのがマッチしてしまいます
このfpsという部分だけを除外させてマッチさせるには、どう打ち込めばいいのでしょうか?
pc18xgameとか、エロゲ18xgameとかがあった場合は、マッチさせたいので、この「fps」だけを除外したいのです
どうかよろしくお願いします
0109デフォルトの名無しさん
2011/05/25(水) 23:40:59.36探しやすくて助かりました。
0111デフォルトの名無しさん
2011/05/26(木) 12:54:22.56がんばれ
0112uy
2011/05/27(金) 17:00:13.06やってる奴いない?
0113デフォルトの名無しさん
2011/05/27(金) 17:25:25.97正規表現ってもともとそこに来歴があるし。
flexのinfoは日本語訳もあるから読んでみたら?
0114デフォルトの名無しさん
2011/05/27(金) 17:33:24.61正規表現は万能じゃないしな
0115デフォルトの名無しさん
2011/05/27(金) 17:43:07.300116デフォルトの名無しさん
2011/05/27(金) 17:45:07.480117デフォルトの名無しさん
2011/05/27(金) 21:11:38.19特徴抽出やかな漢字変換には使えないよ。
形態素解析も正規表現でしたのは手軽だけど問題だらけ〜
0118デフォルトの名無しさん
2011/05/27(金) 21:11:40.85どっちももう10年以上は見てないなぁ
0119uy
2011/05/27(金) 21:14:08.29できるんだ、じゃあこれを正規表現で字句解析かくとどうなる?
#include <stdio.h>
struct A {
int x;
}a;
int main(){
return(0);
}
0120デフォルトの名無しさん
2011/05/27(金) 21:14:21.7910年単位で拘束される案件なんだけど、興味ある?
0121デフォルトの名無しさん
2011/05/28(土) 00:55:28.05Apache RewriteRule
●検索か置換か?
検索
●説明
1〜5つのカンマ区切りの単語を一致させたい
連結数は不定
●対象データ
apple
apple,orange,pineapple,grape,melon
orange,pineapple,melon
●希望する結果
○apple
○orange,pineapple,melon
× ,apple
不定数連結されたパターンに悩んでいます
0122デフォルトの名無しさん
2011/05/28(土) 01:02:35.630123121
2011/05/28(土) 01:12:38.70こちらの希望結果が説明不足でした。
せっかくレス下さったのに申し訳ないです。
●希望する結果(追加)
× apple,
△apple,pineapple/peach ・・・ /peachの手前まで一致
五つの単語以外は一致しないようにしたいのです。
お手数おかけします。
0124デフォルトの名無しさん
2011/05/28(土) 04:03:59.55たかだか4個までのカンマを含むアルファベットならびに
一致するという意味かな?
0125デフォルトの名無しさん
2011/05/28(土) 04:16:19.580126デフォルトの名無しさん
2011/05/28(土) 04:19:01.640127デフォルトの名無しさん
2011/05/28(土) 05:15:52.640128デフォルトの名無しさん
2011/05/28(土) 05:17:18.27^(\w+)(?:,(\w+)){0,4}
0129デフォルトの名無しさん
2011/05/28(土) 05:28:17.49> 五つの単語以外は一致しないようにしたい
apple
orange
pineapple
grape
melon
限定でいいのね?重複は許可するの?
否定先読みとか使えれば何とかなりそうだけどどうなんだろ
0130デフォルトの名無しさん
2011/05/28(土) 08:52:51.42SELECT CASE文で分岐するとか、
そういう実装ではダメなのでしょうか?
0131デフォルトの名無しさん
2011/05/28(土) 09:24:11.50ながい
0132デフォルトの名無しさん
2011/05/28(土) 09:27:00.77[a-zA-Z]+(?:,[a-zA-Z]+){0,4}
0133デフォルトの名無しさん
2011/05/28(土) 10:25:47.90せっかく長くしても、apple,melonsoda → apple,melonにマッチ
しちゃうから、\bを入れるか(?![,a-zA-Z])にした方が良いのかも
^((apple|orange|pineapple|grape|melon),)*(apple|orange|pineapple|grape|melon)\b(?!,)
^((apple|orange|pineapple|grape|melon),)*(apple|orange|pineapple|grape|melon)(?![,a-zA-Z])
0134131
2011/05/28(土) 10:29:24.270135デフォルトの名無しさん
2011/05/28(土) 12:12:17.950137121
2011/05/28(土) 13:38:50.15今、手元に環境がないので確認出来ませんが試してみます
ありがとうございます!!
0138デフォルトの名無しさん
2011/05/28(土) 21:05:05.25melonsoda、ワラタ センスありますね
0139デフォルトの名無しさん
2011/05/31(火) 16:51:50.50POSIX又は拡張POSIXでお願いします
0140デフォルトの名無しさん
2011/05/31(火) 20:37:43.77^((?!ttp://).)*$
0141デフォルトの名無しさん
2011/06/01(水) 00:00:21.370142デフォルトの名無しさん
2011/06/01(水) 03:30:06.43(((((((((([^t]*)*(t+[^t][^t]*)*)*)*(t+[^p][^t]*)*)*)*(t+[^:][^t]*)*)*)*(t+[^/][^t]*)*)*)*(t+[^/][^t]*)*)*
このスレのレス全部あぼーんしたw
0143デフォルトの名無しさん
2011/06/01(水) 04:23:56.92滅茶苦茶な正規表現力だな
0144デフォルトの名無しさん
2011/06/05(日) 05:10:16.10●正規表現の使用環境
ActionScript 3.0
●検索か置換か?
検索
●説明
文字列の先頭が「プラス符号かマイナス符号か数字か」と
末尾が「数字か」でBoolean判定を行いたい。
●対象データ
1.2345 +123.45 -3.1245 青3.1245 3.1245赤
●希望する結果
1.2345→true +123.45→true -3.1245 → true 青3.1245→false 3.1245赤→false
0145デフォルトの名無しさん
2011/06/05(日) 05:14:14.020146144
2011/06/05(日) 05:15:57.11試したコードは下記です。
var patt0 = new RegExp("^(\d|[-]|[+])");//先頭部分の判定
var patt1 = new RegExp("\d$");//末尾
if (patt0.test(str0) == true && patt1.test(str0) == true) {
//trueと出力
} else {
//falseと出力
}
最初と最後の文字のみに注目しているのでフラグ("g"など)は無しにして
いますが、上の記述だと 1.2345 でもfalseが出力されます。
どう変えれば良いでしょうか?
因みに、ActionScriptはJavaScriptと同じECMAスクリプトを起源にしています。
(正規表現も共通点が多いようです)
0148デフォルトの名無しさん
2011/06/09(木) 05:36:32.37なんでなのかな?そんな難しいことなの?
0149デフォルトの名無しさん
2011/06/09(木) 09:59:11.59何でだろうね。
Perlなら\Kでできるけど。
0150デフォルトの名無しさん
2011/06/09(木) 12:17:45.37正規表現を実装することを考えればわかると思うけど試行回数がとんでもない数になる
0151デフォルトの名無しさん
2011/06/09(木) 17:06:40.09ふたつの正規表現が、並んでるか並んでないかだけの話じゃないの?
0152デフォルトの名無しさん
2011/06/09(木) 19:04:29.76バックトラックの回数が多くなって難しいんじゃない
http://practical-scheme.net/wiliki/wiliki.cgi?Rui%3A%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE%E3%81%AE%E6%8B%A1%E5%BC%B5
たしかフクロウ本にも戻り読みの動作について説明されてたと思うから
興味があれば引いてみては
>>149の言うように「perlは正規表現から始まった」という印象がありますが、
実際、perlは正規表現については今でも特異な地位(優位性)を持っているのでしょうか?
Java、PHPを業務で触ってきましたが、perlはまだなので気になっています。
0154デフォルトの名無しさん
2011/06/09(木) 22:03:53.580155デフォルトの名無しさん
2011/06/09(木) 22:14:09.55perl風に実装することにはあるんじゃないかな
0156デフォルトの名無しさん
2011/06/10(金) 15:19:21.28PHP 5.1
●検索か置換か?
検索
●説明
角括弧が対応する始点から終点までをすべて抽出したいです。
●対象データ
[[hoge:f1=piyo,f2=fuga]foobar[[hogera:]]baz][[qux:a=xyzzy]]
●希望する結果
ほげ[[hoge:f1=piyo,f2=fuga]ふが[[hogera:]]ぴよ]ほげら[[foo:]ぴよぴよ][[qux:a=xyzzy]]
1^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2^^^^^^^^^^^^^^^3^^^^^^^^^^^^^^
ご教授よろしくお願いします。
0157デフォルトの名無しさん
2011/06/10(金) 15:21:25.44●対象データ
ほげ[[hoge:f1=piyo,f2=fuga]ふが[[hogera:]]ぴよ]ほげら[[foo:]ぴよぴよ][[qux:a=xyzzy]]
0158デフォルトの名無しさん
2011/06/10(金) 15:26:20.46こういうこと?
0159デフォルトの名無しさん
2011/06/10(金) 17:59:09.73()
0160デフォルトの名無しさん
2011/06/10(金) 18:55:08.22\[((?>[^[\]]+)|(?R))*\]
0161デフォルトの名無しさん
2011/06/11(土) 04:56:57.88> 括弧の入れ子はイヤズラ
> <hr>
> ()
になってんだけどどうなってんの?
ノtasukeruyoみたいな。
0162デフォルトの名無しさん
2011/06/11(土) 09:27:21.260163デフォルトの名無しさん
2011/06/11(土) 10:02:14.73�d
0164デフォルトの名無しさん
2011/06/12(日) 05:57:20.48変なの
0165デフォルトの名無しさん
2011/06/12(日) 21:55:15.07報告遅くなりましたがそれでできました!ありがとうございます。
0166デフォルトの名無しさん
2011/06/14(火) 19:24:59.26●正規表現の使用環境
perl
●検索か置換か?
置換
●
これはどういう置換でしょうか
$salt =~ s/[^\.-z]/\./go;
0167デフォルトの名無しさん
2011/06/14(火) 19:42:08.00自己解決しました。
'.'(0x2e)から'z'(0x7a)までの文字以外の文字は'.'(0x2e)にするのですね
0168デフォルトの名無しさん
2011/06/15(水) 19:57:29.96●正規表現の使用環境
PHP
●検索か置換か?
置換
●説明
いくつか連続した\nを、すべて<br />に置換
●対象データ
\n
\n\n\n
(連続数は1〜n)
●希望する結果
<br />
<br /><br /><br />
0169デフォルトの名無しさん
2011/06/15(水) 20:00:46.860170デフォルトの名無しさん
2011/06/15(水) 20:04:53.35DB上に入ってる文字列データをHTMLとして出力するのに使いたいんです・・・
0171デフォルトの名無しさん
2011/06/15(水) 20:05:26.01str_replace("\n", "<br />", $src);
0172168
2011/06/15(水) 20:19:42.53もうちょっと複雑にパターンを考えなきゃいけないようでした。
すぐに説明するのが難しいので一度出直してきます。
お手間取らせて申し訳ないです。
0173デフォルトの名無しさん
2011/06/15(水) 20:41:36.480174デフォルトの名無しさん
2011/06/15(水) 20:52:49.250175デフォルトの名無しさん
2011/06/15(水) 22:01:34.54str_replace('\n', "<br />", $s)
0176デフォルトの名無しさん
2011/06/16(木) 22:37:16.72次の例文で、[ ]の部分にひらがなの「ぺ」が27回続く場合にのみマッチする正規表現
ゆうていみやおうきむこうほりいゆうじとりやまあきら[ ]
処理対象文字
ゆうていみやおうきむこうほりいゆうじとりやまあきらぺぺぺぺぺぺぺぺぺぺぺぺ
ゆうていみやおうきむこうほりいゆうじとりやまあきらぺぺぺぺぺぺぺぺぺぺぺぺぺぺぺぺぺぺぺぺぺぺぺぺぺぺぺ
ゆうていみやおうきむこうほりいゆうじとりやまあきらぺぺぺぺぺぺぺぺぺぺぺぺぺぺぺぺぺぺぺぺぺぺぺぺぺぺぺぺぺぺぺぺぺぺぺぺぺぺぺ
実行した正規表現
.*ぺ{27}
実行結果
ゆうていみやおうきむこうほりいゆうじとりやまあきらぺぺぺぺぺぺぺぺぺぺぺぺぺぺぺぺぺぺぺぺぺぺぺぺぺぺぺ
ゆうていみやおうきむこうほりいゆうじとりやまあきらぺぺぺぺぺぺぺぺぺぺぺぺぺぺぺぺぺぺぺぺぺぺぺぺぺぺぺぺぺぺぺぺぺぺぺぺぺぺぺ
何で27回以外の「ぺ」が出力されるのか訳ワカメちゃん
0177176
2011/06/16(木) 22:39:33.33すいません。
そりゃ
.*ぺ
に「ぺ・・・」が含まれるからだよね。
ほんとすいまぺぺぺぺぺぺぺ
0178デフォルトの名無しさん
2011/06/16(木) 22:56:49.13ひどいいじめだ
0180デフォルトの名無しさん
2011/06/17(金) 01:19:28.83正規表現に途中までマッチしたとか、もうちょっと食わせれば完全に
マッチするとか知ることできれば便利だと思うのですがそのような方法はありますでしょうか?
0181デフォルトの名無しさん
2011/06/17(金) 05:08:04.43エスパーな小人をパソコンにいれるとか。
0182デフォルトの名無しさん
2011/06/17(金) 07:06:16.710183デフォルトの名無しさん
2011/06/17(金) 16:27:44.21Visual Basic Script
●検索か置換か?
置換
●説明
タイトルを抜き出して一行目の先頭に書き入れたい
●対象データ
誤爆防止のため、書き込みは移行しました<h1 id="topic_title"><strong><span class="subj">2ちゃんねるたかじんのそこまで言って委員会</span></strong></h1>
1:<strong><span class="name"> </span></strong>
:
<p class="date">2011/04/16 (Sat) 15:38:46</p> </dt>
<dd>
2ちゃんねるマスコミ板スレッド「たかじんのそこまで言って委員会
●希望する結果
2ちゃんねるたかじんのそこまで言って委員会
1: :2011/04/16 (Sat) 15:38:46
2ちゃんねるマスコミ板スレッド「たかじんのそこまで言って委員会
0184デフォルトの名無しさん
2011/06/17(金) 20:52:22.93^.*<.*"topic_title">(<[^>]*>)*([^<]+).*$
\2
0185デフォルトの名無しさん
2011/06/17(金) 21:31:35.38http://lavianrose.s56.xrea.com/desktop/img/1693.png
http://lavianrose.s56.xrea.com/desktop/img/1692.png
http://lavianrose.s56.xrea.com/desktop/img/1691.png
うまくいきませんでした、もしかしたらこちらで何かミスをしてるかもしれません。
正規表現を少し削ってみたりしたけどこちらの勉強不足で判断できませんでした。
0186デフォルトの名無しさん
2011/06/17(金) 21:38:57.91^.*<.*"topic_title">(<[^>]*>)*([^<]+).*$
置換文字列
\2
これでもダメ?
0187デフォルトの名無しさん
2011/06/17(金) 22:23:44.19VBscript内で
repText5 = "\2"
objRep.Pattern = "^.*<.*"topic_title">(<[^>]*>)*([^<]+).*$" ←---★
newText = objRep.replace(newText, repText5)
objFile.Close
' 書き込み
Set objFile = objFSO.CreateTextFile(var1,2,false)
objFile.WriteLine (newText)
って正規表現入れたんですが★の行でステートメントの末尾が不正です。
と、恐らくダブルクォート関連のエラーがでてしまって
実際のプログラム上ではどう動くかまだ実験できてないんです、すみません。
str ="^.*<.*"topic_title">(<[^>]*>)*([^<]+).*$"
objRep.Pattern = str
とかもしてみたんですけど、ちょっと時間掛かりそうです
0188デフォルトの名無しさん
2011/06/17(金) 22:40:43.32objRep.Pattern = "^.*<.*""topic_title"">(<[^>]*>)*([^<]+).*$"
0189デフォルトの名無しさん
2011/06/17(金) 23:20:38.04--------------結果---------------------------
\2
1:<strong><span class="name"> </span></strong>
:
<p class="date">2011/04/16 (Sat) 15:38:46</p> </dt>
<dd>
2ちゃんねるマスコミ板スレッド「たかじんのそこまで言って委員会
--------------ここまで---------------------------
まだよくわかってないんですが
もしかして、\2のところにタイトル文の
2ちゃんねるたかじんのそこまで言って委員会
は代入されないですか?
0190デフォルトの名無しさん
2011/06/18(土) 00:04:08.750191デフォルトの名無しさん
2011/06/18(土) 00:14:58.63うおおおおおおお
すごいいいいいい
正規表現って変数に入れられるんですね
うまくいきました!
ありがとうございました!
0192デフォルトの名無しさん
2011/06/18(土) 19:08:41.62Onigmo is a regular expressions library forked from Oniguruma.
だそうだ。perlの名前参照とか\R,\Kなどが使えるようになってるっぽい。
0193デフォルトの名無しさん
2011/06/20(月) 00:12:52.550195デフォルトの名無しさん
2011/06/20(月) 06:38:00.21鬼車の開発がRuby作者との揉め事以降、止まってたから
開発を引き継ぐ人が現れたには大きいね
ところで\Rや\Kってどういうメタ文字なの?
Googleは記号や大文字が検索できないからググってもよくわからないんだ
0196デフォルトの名無しさん
2011/06/20(月) 06:49:41.88http://perldoc.perl.org/perlre.html 最新(5.14)英語版
日本語訳の最新版は5.9.5か?
\RはCRLFを含めた改行1つにマッチ。
\Kは戻り読みとほぼ同等。ただし可変長が使える。
0197デフォルトの名無しさん
2011/06/20(月) 09:54:21.05Rubyと揉めてたのって2007年頃では?
鬼車の最終更新は2010/01/09
0198デフォルトの名無しさん
2011/06/20(月) 10:22:41.55どっかに例題つきのわかりやすいサイトとかってないのかな
2chのdatファイル整形とか掲示板のhtml整形とかやりたいんだけど
例えば<br>か</br>までとか複数細かくやりたいときとか多くて勉強したいんだよな、興味深いし
0199デフォルトの名無しさん
2011/06/20(月) 11:42:16.310200デフォルトの名無しさん
2011/06/20(月) 14:33:01.04VBScript
●検索か置換か?
検索
●説明
http://upload.jpn.ph/500/bin/とんこつ.zip
だけを変数に入れて、後で変数を利用したい
●対象データ
</style>
<META HTTP-EQUIV="Refresh" CONTENT="1;URL=http://upload.jpn.ph/500/bin/とんこつ.zip">
</HEAD>
●希望する結果
適当な変数=http://upload.jpn.ph/500/bin/とんこつ.zip
例:もし変数 var5 とかにとんこつ.zipを代入できるなら
WScript.Echo var5
としたときにhttp://upload.jpn.ph/500/bin/とんこつ.zip
と出力できるようにしたいです。
もし上手く説明できてなかったらごめんなさい。
よろしくお願いします。
0201デフォルトの名無しさん
2011/06/20(月) 14:36:34.81素直にスクレイピングしたほうがいいように思うけどねぇ。
0202デフォルトの名無しさん
2011/06/20(月) 15:06:12.81(http:\/\/[\x21-\x7e]+)
で抜き出してみたんだけど、そうすると
"> まで$1に変数としてはいっちゃうんだ
0203デフォルトの名無しさん
2011/06/20(月) 15:50:58.65ウソつけ
それじゃ対象データに対して取得できるのは
http://upload.jpn.ph/500/bin/
までだろ
とんこつ.zipが入らん
(http:\/\/[^"]+) とでもしとけ
VBSだと " → "" か \x22
0204デフォルトの名無しさん
2011/06/20(月) 15:57:52.77すごいです!
ありがとうございます。
今回のでもの凄く正規表現の参考になりました!
0205デフォルトの名無しさん
2011/06/20(月) 18:27:04.93質問内容からして、厳密なマッチは望んでないんでね?
URLだって本来はRFCの定義までさかのぼって考える必要があるものだが
自作ツールなら多少適当でも十分役立つことが多いし
0206デフォルトの名無しさん
2011/06/20(月) 21:58:58.58鬼車の開発は実質2007年に止まったようなものだよ。
0207デフォルトの名無しさん
2011/06/20(月) 23:33:30.26定番だがいろいろなサイト回るよりフクロウ本買って読んだほうが手っ取り早い
それなりの大学図書館なら置いてあるからお金が無いなら借りるって手もある
0208デフォルトの名無しさん
2011/06/20(月) 23:42:21.14プログラマの危ない会話
http://hibari.2ch.net/test/read.cgi/prog/1169899012/
で、正規表現ネタを一発かます
これで一人前
0209デフォルトの名無しさん
2011/06/21(火) 00:25:48.31大学図書館って誰でも入れるの?
0210デフォルトの名無しさん
2011/06/21(火) 00:31:31.500211デフォルトの名無しさん
2011/06/21(火) 00:41:06.850212デフォルトの名無しさん
2011/06/21(火) 00:43:08.68入り口の守衛のとこで身分証明証が必要だったり記入したりする事無いの?
一度大学ってものを見学してみたい。
0213デフォルトの名無しさん
2011/06/21(火) 01:08:46.200214デフォルトの名無しさん
2011/06/21(火) 02:21:15.61今は学生証はICカードだし、監視カメラで顔識別・虹彩認証されて
関係のない人間はレーザーで焼き殺されるから、気をつけろよ>>212
0215デフォルトの名無しさん
2011/06/21(火) 02:35:49.32中卒……。
>>214
レーザーでローストされるのは嫌だ
やっぱ行くのやめとく
0216uy ◆yyC0rYWEq2
2011/06/21(火) 04:57:05.12うわ、中卒乙うわ、中卒乙うわ、中卒乙うわ、中卒乙うわ、中卒乙うわ、中卒乙うわ、中卒乙うわ、中卒乙
うわ、中卒乙うわ、中卒乙うわ、中卒乙うわ、中卒乙うわ、中卒乙うわ、中卒乙うわ、中卒乙
うわ、中卒乙うわ、中卒乙うわ、中卒乙うわ、中卒乙うわ、中卒乙うわ、中卒乙
うわ、中卒乙うわ、中卒乙うわ、中卒乙うわ、中卒乙うわ、中卒乙
うわ、中卒乙うわ、中卒乙うわ、中卒乙うわ、中卒乙
うわ、中卒乙うわ、中卒乙うわ、中卒乙
うわ、中卒乙うわ、中卒乙
うわ、中卒乙
うわ、中卒乙
うわ、中卒乙
うわ、中卒乙
うわ、中卒乙
うわ、中卒乙
0217デフォルトの名無しさん
2011/06/21(火) 07:04:27.15「研究」と書けばおk)。私立だとダメだったり地元民に限ってたりすることも多くて、
自分の所属機関か地元の図書館からの一筆を要求されたりする。
あと図書館とは関係なく大学の出入りは最近チェックがやかましいので、
入構するときに持たされる確認証を図書館でチェックされることがあるので、
無理して潜り込もうとしないほうが無難。
0218デフォルトの名無しさん
2011/06/21(火) 07:05:45.660219デフォルトの名無しさん
2011/06/21(火) 18:36:48.13今はどうか知らんが通ってた頃は学食とかにリーマンとかも混ざって食事していた
0220デフォルトの名無しさん
2011/06/24(金) 23:27:08.46grepとかegrepとか
●検索か置換か?
検索
●説明
a,nの2文字のみが含まれる行を検索したい
●対象データ
aaa
ann
nana
anana
sin
anans
●希望する結果
上4つのみ出力
下二つは引っかからない
0221デフォルトの名無しさん
2011/06/24(金) 23:33:00.000222デフォルトの名無しさん
2011/06/24(金) 23:38:03.82ありがとうございます
できました
0223デフォルトの名無しさん
2011/06/28(火) 22:21:04.59jane?
●検索か置換か?
置換
●説明
文字レスを排除したい
http://kamome.2ch.net/test/read.cgi/kao/1305395856/
このスレの文字レスのみを排除してAAだけを表示させる事は出来ますでしょうか?
0224デフォルトの名無しさん
2011/06/28(火) 23:40:45.09それはともかく、AAかわいいね
0225デフォルトの名無しさん
2011/06/28(火) 23:42:57.50多少の誤爆覚悟で、1〜3行のレスを排除する、くらいか。
0226デフォルトの名無しさん
2011/06/29(水) 00:10:46.88そのスレの332の本文でレス抽出すれば割りと希望の状態になるはず。
0227デフォルトの名無しさん
2011/06/29(水) 00:19:07.060228デフォルトの名無しさん
2011/06/29(水) 00:21:13.83ベイジアンフィルタとか使ってみるか?w
0229223
2011/06/29(水) 00:46:23.81うーんやっぱり難しいというか、こりゃ無理ですねw(汗
ただ、全角スペース3個並びを抽出したり
" | "を抽出する、でかなり理想通りになりました
アドバイスありがとうございました!
0230デフォルトの名無しさん
2011/06/29(水) 07:56:09.29http://hibari.2ch.net/test/read.cgi/tech/1189246036/
0231デフォルトの名無しさん
2011/06/29(水) 16:36:55.29<aiueo>
<aiueo<kakikukeko>
これはaiueo kakikukekoの2つを取得したいのですが
このままだと
aiueoとaiueo<kakikukekoが取得されてしまいます
どうしたらいいでしょうか?
0232デフォルトの名無しさん
2011/06/29(水) 16:50:07.50* のほうが都合よければそっちで。
0233231
2011/06/29(水) 17:12:48.09動きました
意味が分からないので調べタイと思います
0234天使 ◆uL5esZLBSE
2011/07/06(水) 02:51:45.56[[[[[ <(.*)>を取得したいのですが ]]]]](キリッ!キリッッ!!!!キリッッッ!!!!
----
[[[[[[[ <aiueo<kakikukeko> ]]]]]]](キリッッ
----
[[[[[[ これはaiueo kakikukekoの2つを取得したいのですが ]]]]]](キリ!!!!キリッッッッ!!!!キリきリッッ!!!キリッ
--
[[[[[[[ aiueoとaiueo<kakikukekoが取得されてしまいます ]]]]]]](キリッッッッ!!キリッッッ!キリキリッ
----
[[[[[[[[ どうしたらいいでしょうか? ]]]]]]]](キリッッッ!キリッッッッ!キリッッッッ!!
---------------(キリ
0235デフォルトの名無しさん
2011/07/06(水) 08:24:21.910236デフォルトの名無しさん
2011/07/06(水) 21:09:55.97●正規表現の使用環境
VBA
●検索か置換か?
検索
●説明
対象データのフォーマットチェックをしたいです
A01;B02;C03;…
英数字3桁がセミコロンで区切られたデータに対して様式通りならtrueを返します
一番最後にはセミコロンはつきません
●対象データと希望する結果
A01;B02;C03 →true
A01;B02;C03; →false
A01;B092;C03 →false
0237デフォルトの名無しさん
2011/07/06(水) 21:18:35.730238デフォルトの名無しさん
2011/07/06(水) 21:32:14.23901;B02;C3J
といったものでもtrueにしたいのです。
0239デフォルトの名無しさん
2011/07/06(水) 22:03:51.96ながい
半角英数で一文字で表現できたっけ?
0240デフォルトの名無しさん
2011/07/06(水) 22:06:45.25○半角英数って一文字で表現できたっけ?
0241デフォルトの名無しさん
2011/07/06(水) 22:07:41.42[:alnum]とかないことはないけど使ったことが無い
0242デフォルトの名無しさん
2011/07/06(水) 22:16:09.56\w は指摘出てるし環境的に [:alnum:] も使えないみたい。
0243236
2011/07/06(水) 22:27:43.30([a-z0-9]{3};)*([a-z0-9]{3})と考えていたんですがこれだと
001;002;003;0084でもTrueになってしまって困っていました。
^$入れると変わるんですね。。。
0244デフォルトの名無しさん
2011/07/08(金) 15:07:14.12●正規表現の使用環境
JavaScript
●検索か置換か?
検索
●説明
xという文字から、xという文字までの取得
ただしyxというパターンが含まれている場合は飛ばして、次のxを探す
x((?!yx).)*xを試しましたが、途中で検索が打ち切られて思うようになりません
●対象データ
"ab\"c",'def'
●希望する結果
"ab\"c"
0245244
2011/07/08(金) 15:09:19.28検索表現にgをつけて使用します
while(a = /reg/g.exec(str))〜のようにして
0246デフォルトの名無しさん
2011/07/08(金) 16:51:20.14hoge="3"
fuga="5"
という文字列があったとき".*"でマッチしたところ、"3","5"という結果でした
サルにもわかる正規表現入門では、.*というのは、可能な限り合致するものまで繋がる
と書いてあったので、"3"fuga="5"とマッチされる気がするのですが、
なぜこうなるのでしょうか?
0247デフォルトの名無しさん
2011/07/08(金) 16:58:00.90外してるなら周辺コードも貼ると答えやすい
0248デフォルトの名無しさん
2011/07/08(金) 17:41:26.86match_not_dot_newline
0249246
2011/07/08(金) 18:24:28.65247-248さん
ありがとうございました。
0250デフォルトの名無しさん
2011/07/08(金) 21:24:59.44x.*(?<!y)x
か
x.*?(?<!y)x
javascriptはわからん
0251デフォルトの名無しさん
2011/07/08(金) 22:29:59.64"(.*[^\\])?"
0252デフォルトの名無しさん
2011/07/08(金) 23:48:40.84エスケープありのダブルクォート文字列: "(?:\\.|[^\\"])*"
さらに改行のエスケープも認めない: "(?:\\.|[^\\"\n])*"
0253デフォルトの名無しさん
2011/07/09(土) 00:29:29.23"(.*?[^\\])?"
0254244
2011/07/09(土) 02:56:37.06回答ありがとうございました
試してみた結果、x.*(?<!y)xはjs非対応っぽいです
"(.*?[^\\])?"だと、"abc" + "def"という表現を全部取得しちゃう(これは>>244の例が悪かったです。すみません。"でくくった文字列を取得したいと書けばよかった)
"(?:\\.|[^\\"])*"は望みの動作でした。\\.で、エスケープされた文字を表現するんですね
0255デフォルトの名無しさん
2011/07/10(日) 01:39:13.22http://stocks.finance.yahoo.co.jp/stocks/history/?code=9984.T
.
.
.
<td>2011年6月30日</td>
<td>3,010</td>
<td>3,050</td>
<td>2,986</td>
<td>3,030</td>
<td>8,376,600</td>
<td>3,030</td>
.
.
このページのソースから正規表現で、下記のように日付と株価の部分だけ抜き出すにはどうしたらよいでしょうか?
2011年6月30日
3,010
3,050
2,986
3,030
8,376,600
3,030
.
.
.
.
言語はRubyで、([^<>]+)などで色々やってみましたが、どうにもうまく抜き出せません。
また、webのHTMLから、正規表現である程度特定して文字列を抜き出し、
その特定して抜き出した文字列に再度正規表現で、文字列を特定していくという
方法は可能でしょうか?
よろしくお願いします。
0256255です。
2011/07/10(日) 01:44:18.09●正規表現の使用環境
Ruby
●検索か置換か?
検索
●説明
株価のみを抜出し、DBに入れていく予定でいます。
●対象データ
http://stocks.finance.yahoo.co.jp/stocks/history/?code=9984.T
のソースから
●希望する結果
2011年6月30日
3,010
3,050
2,986
3,030
8,376,600
3,030
.
.
.
日付、始値、高値、安値、終値、出来高、調整後終値
です。
0257デフォルトの名無しさん
2011/07/10(日) 02:05:48.29\1
で一塊ずつ抜き出して、
^<td>(.*)</td>$
\1
でさらに中身の抜き出し
0258255
2011/07/10(日) 02:39:16.37ありがとうございます。
しかしながら、うまくいきませんでした。自分はwindowsを使っていますが、プログラム初心者なので
うまく理解できていない部分がたくさんある可能性が高いので一つ一つ分解して勉強させてもらいます。
0259デフォルトの名無しさん
2011/07/10(日) 02:52:28.77どの言語でも良いけどループ使えば簡単だし。
0260255
2011/07/10(日) 03:06:58.57ありがとうございます。まだ、Rubyとjava以外ほとんどさわったことがないです。
毎日の株価を自動で取得したり、過去の株価データ10年分、全銘柄をDBにいれて、ストラテジーをバックテストできる環境を作ろうと思いまして
javaなどをやってみたりしたんですが、プログラミングがむずかしくてうまくいかず、一番しっくりきたのがRubyでした。
株価ですが、ある程度期間がたつとwebのHTML形式が細かく変わっていくので正規表現を覚えてwebからスクレイピングしていくのが一番良いと判断しました。
まだ、株価を綺麗に抜き出す段階で苦労しています。
0261デフォルトの名無しさん
2011/07/10(日) 23:28:05.15正規表現じゃなくて、XMLパーサ使ったほうが簡単だよ。Nokogiriをつかえば、
# coding: utf-8
require 'open-uri'
# require 'rubygems' # 1.8系では必要
require 'nokogiri'
Nokogiri(open('http://stocks.finance.yahoo.co.jp/stocks/history/?code=9984.T').read)\
.search('table.boardFin tr').map{|e| e.children.map(&:content).reject{|ee| ee == "\n"}}
# => [["日付", "始値", "高値", "安値", "終値", "出来高", "調整後終値*"], ["2011年7月8日", "3,190", "3,190", "3,105", "3,110", "6,151,100", "3,110"], ...
0263デフォルトの名無しさん
2011/07/13(水) 02:16:06.17Boost.Regex
●検索か置換か?
検索
●説明
文字列の要素を抜き出したい
●対象データ
[push x ='100' y= '200' name = 'aaa']
[ins x = '100' y='200' z='300' name='ppp']
●希望する結果
push
x
100
y 200
name aaa
-------------------
ins
x
100
y
200
z
300
name
ppp
\\[(\\w+) +(\\w+) *= *'(.*)' +(\\w+) *= *'(.*)' +(\\w+) *= *'(.*)'\\]
で、あらかじめ要素数が決まっていれば可能なのですが、
[A B='C' ...] と要素数が不定な数ある場合どうすればいいでしょうか?
標準的正規表現で
[^\[\s='\]]+
これをグローバルマッチさせればいいんでないの
ただし、クオーテーション内に[]\s=は使用不可
イテレータとか違うのかな
0265デフォルトの名無しさん
2011/07/13(水) 05:45:12.43例えば、一行目の
name aaa と
二行目の
x
100
の差が何によって起こるのかわからない。
オペレータ '=' と左右の空白は同一の
形式だと思うが。
0266デフォルトの名無しさん
2011/07/13(水) 06:45:58.05PHP 5.2.5
●検索か置換か?
置換
●説明
<a>でリンクされていないURLだけをリンクしたい
●対象データ
<a href='http://aaaaaa/aaa'>http://aaaaaa/aaa</a>
<a href='http://aaaaaa/aaa'>bbb</a>
http://aaaaaa/aaa
http://aaaaaa/aaa
(httpの前に改行は無いです)
●希望する結果
<a href="http://aaaaaa/aaa">http://aaaaaa/aaa</a>
<a href="http://aaaaaa/aaa">bbb</a>
<a href="http://aaaaaa/aaa">http://aaaaaa/aaa</a>
<a href="http://aaaaaa/aaa">http://aaaaaa/aaa</a>
↓これではダメでした。。
/((?![\"\'>])(https?:\/\/[-_.!~*'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)(?![\"\'<]))/
0267デフォルトの名無しさん
2011/07/13(水) 06:59:17.97while や for で何度もマッチさせるんだよ
0269デフォルトの名無しさん
2011/07/15(金) 03:48:07.73エラーになってしまいます
[^\=\"\'>](https?:\/\/[-_.!~*'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)
これでできたので、とりあえず書いてみます。
0270デフォルトの名無しさん
2011/07/18(月) 07:06:17.74>>261
この ('table.boardFin tr')というのは、Xpath、正規表現、またはnokogiri専用の表記のうち
どれにあたるのでしょうか?ぐぐってみても見つからずどうやって、この辺の表記の仕方を勉強すればよいでしょうか?
0271デフォルトの名無しさん
2011/07/18(月) 10:07:57.66rubyは触ったことないけど、そのいずれにも当てはまらなくね?
どう見てもCSSセレクタの表記にしか見えない
0272デフォルトの名無しさん
2011/07/19(火) 03:05:23.86>>271の言うとおりただのCSSセレクタ
意味は「クラス属性のひとつがboardFinのtable要素 の 子孫要素 の tr要素」
id属性だけで特定できるならxpathが簡単だけど、クラス属性を使わないと特定できないなら
属性を簡潔に書けるCSSセレクタの方が好きかな。
Nokogiriはどっちにも対応してるし、ちゃんぽんにしても書けるみたい。
0274270
2011/07/20(水) 00:30:34.52重ね重ね申し訳ないのですが、
map{|e| e.children.map(&:content).reject{|ee| ee == "\n"}}について
.reject{|ee| ee == "\n"}これは、改行の\nを取り除くということは、わかったのですが
.map{|e| e.children.map(&:content)
はchilderenの中の数字の部分を取り出すという意味だとおもうのですが
&:content ここの部分がどこを指すのか、わかりませんでした。
HTMLソースの<meta http-equiv="Content-Type" content="text/html; charset=utf-8">に
contentという文字を見つけたのでここ由来でテキスト表記を取り出すという意味なのかなと考えて
いますが、あっていますでしょうか?
また&:はどういう意味で下記で言えばどこの部分になるのでしょうか?
[#<Nokogiri::XML::Element:0x1def1d8 name="td" children=[#<Nokogiri::XML::Element:0x1def1d8 name="td" children=[#<
1def156 "2011\345\271\2647\346\234\21019\346\227\245">]>,#<Nkogiri::XML::Text:0x1db3f84 "\n">
よろしくお願いします。
0275デフォルトの名無しさん
2011/07/20(水) 00:33:39.010276270
2011/07/20(水) 00:59:54.16申し訳ないです。
最初は正規表現で抜き出そうとしていたのですが、XMLパーサーの方がよいというアドバイスをうけ質問を続けてしまいました。
あと、272さんに是非聞いてみたくて、これを最後にここでのXMLパーサーの質問はやめます。
0277デフォルトの名無しさん
2011/07/20(水) 03:11:53.36contentはNokogiri::XML::Nodeクラスのメソッドでノード(要素)の中身(文字列or nil)を取り出す。
enum.map(&:meth)はenum.map{|e| e.meth}の簡略表記。
スクレイピングはライブラハックみたいな事件もあるから注意してやってね。
これ以降はRubyスレで。
0278255
2011/07/20(水) 04:38:35.98大変ありがとうございます。勉強になりました。
ライブラハックぐぐってみました、自分が買ったシステムトレードの本にも
アクセスは10秒に一回程度にしてと書いてありましたし、人様に迷惑のかからない範囲で
最新の注意を払ってやります。
0279デフォルトの名無しさん
2011/08/03(水) 12:40:03.46C# 4.0
●検索か置換か?
置換です
●説明
HTMLファイルのソースコードの
<script type="text/javascript">〜省略〜</script>
scriptタグ開始を含めてscriptタグ終了タグまでを消去したいんです
●対象データ
<script type="text/javascript">
<!--
// 〜コメント〜
内容
// -->
</script>
<script type="text/javascript" src="script.js"></script>
上記のどちらも以下のものでやったのですが、どうもヒットしません
<script\s[a-zA-Z0-9<>()-\.!_~*,;/:@&=+$,%#'""]+>[a-zA-Z0-9<>()-\.!_~*,;/:@&=+$,%#]+\</script>
解答よろしくお願いします
0280デフォルトの名無しさん
2011/08/03(水) 16:06:12.44<script\s[\s\S]*?<\/script>
0281デフォルトの名無しさん
2011/08/03(水) 18:56:01.78DOMで消したほうが確実ではないか?
属性としてもJavaScriptとかつけれるわけだし
0282デフォルトの名無しさん
2011/08/05(金) 22:49:53.78○nds
○gameds
○gamends
×legends
検索したときに、○だけヒットさせるにはどうすればいいか教えてください
0283デフォルトの名無しさん
2011/08/05(金) 22:56:39.120284デフォルトの名無しさん
2011/08/05(金) 23:31:06.880285デフォルトの名無しさん
2011/08/05(金) 23:33:12.650286デフォルトの名無しさん
2011/08/05(金) 23:50:06.430287デフォルトの名無しさん
2011/08/06(土) 00:25:08.040288デフォルトの名無しさん
2011/08/06(土) 00:56:27.17うまくできました
0289デフォルトの名無しさん
2011/08/06(土) 01:04:00.57毎度のことだけどヤレヤレだな
0290デフォルトの名無しさん
2011/08/07(日) 03:15:33.89Emacs Lisp
●検索か置換か?
検索
●説明
C++などでよく使われる構文にマッチさせたい。
具体的にはクラスインスタンスへのアクセスアローやドットにマッチさせたい。
●対象データ
class A;
A a;
A* a_ref = &a;
a.m_hoge;
a->m_hoge;
●希望する結果
これにマッチさせる場合
"\\(?:\\.\\|->\\)\\(\\(?:[a-zA-Z0-9][_a-zA-Z0-9]*\\)?\\)\\="
が正解らしいですが
なぜ正解かわからない部分があるので教えてください。
まず"?"演算子の使い方ですが・・・直前の文字列(空文字込み)にマッチさせるために置いてあるとして
直後の ":"が理解不能です。
後半でも、":"が出てきますがこれも不可解。名前空間の"::"などにマッチさせたいのであれば
::や:?:とかならわかるのですが・・
0291デフォルトの名無しさん
2011/08/07(日) 04:32:22.75> 直前の文字列(空文字込み)にマッチさせるために置いてあるとして
?の後ろの文字(列)で意味が変わってくるんですよ
とりあえず、>>2のサイトを?:で検索してみて
0292デフォルトの名無しさん
2011/08/07(日) 13:44:09.10(?:pattern) は変数にキャプチャしない
0293デフォルトの名無しさん
2011/08/07(日) 23:22:49.99LINUX grepコマンド
●検索か置換か?
検索
●説明
ドットで行に一文字追加されたもののみ検索したい
●対象データ
ABC
ABCD
ABCDE
●希望する結果
ABCD
grep ABC. sample.txtとしても
結果 2文字追加されているABCDEまで出てきてしまいます。。。
ドットは一文字と習ったのですが、
なぜなのかわかりません・・。
0294デフォルトの名無しさん
2011/08/08(月) 00:39:46.750295デフォルトの名無しさん
2011/08/08(月) 00:51:07.33> > 直前の文字列(空文字込み)にマッチさせるために置いてあるとして
> ?の後ろの文字(列)で意味が変わってくるんですよ
> とりあえず、>>2のサイトを?:で検索してみて
>>292
>(?:pattern) は変数にキャプチャしない
>>2で調べて解決しました。
正規表現はマッチング程度しかつかってなかったので
後方参照とかあまり考えたことなかったですね。
?:をつかっていた解答はパフォーマンス等を気にしていたのかな・・・。
いろいろ勉強になりました。ありがとう。
0296デフォルトの名無しさん
2011/08/08(月) 01:01:24.59Dが余計
0297デフォルトの名無しさん
2011/08/12(金) 16:27:24.00●正規表現の使用環境
Hex Editor Neo
●検索か置換か?
検索
●説明
1文字目と3文字目が同じで、2文字と目と4文字目が同じの4文字の文字
●対象データ
ABAB
PAPA
0101
0298デフォルトの名無しさん
2011/08/12(金) 16:35:50.95(.)((?!\1).)\1\2
0299デフォルトの名無しさん
2011/08/12(金) 20:35:16.890300デフォルトの名無しさん
2011/08/12(金) 22:51:52.900301297
2011/08/12(金) 23:36:38.97ありがとうございました。
目的のデータを探す手がかりが出来ました。
ヒットが多いので応用して絞り込みます。
\1を否定しているところがよく解らないので、ここを勉強してみます。
御世話になりました。
0302デフォルトの名無しさん
2011/08/13(土) 14:26:16.55実は入ってる
まあ、説明で「1文字目と2文字目は別文字とする」と明確に書くのが一番だが
その説明が無い場合、というか「1文字目と2文字目が同じ場合を含む」あるいは
「連続する4文字が全て同じ場合を含む」などの条件が明確に書かれている場合を除いて
>>297の説明だけでも1文字目と2文字目は別文字と解釈するのが正解
0303デフォルトの名無しさん
2011/08/13(土) 14:55:39.430304デフォルトの名無しさん
2011/08/13(土) 15:21:36.420305デフォルトの名無しさん
2011/08/13(土) 15:33:36.730306デフォルトの名無しさん
2011/08/13(土) 16:15:41.730307デフォルトの名無しさん
2011/08/14(日) 07:18:27.49常識的に解りそうなことでも、事細かに指示や伝達をしないと、
そんなこと言われてないとか屁理屈でゴネるような奴と仕事するとフォローやストレスで大変そうだ。
0308デフォルトの名無しさん
2011/08/14(日) 07:51:21.44なぜ一言俺に聞かなかった(ドスンッ
まで読んだ
0309デフォルトの名無しさん
2011/08/14(日) 09:14:21.19見て「そこは、こう動くのが当たり前だろ」って言う手のひら返しする話をよく聞
くが >>302=>>307 みたいな奴に当たったんだろうな。
まあ、文句言われても「適当にやってもらえばいいから」って言うのを議事録に
書いとくしかないわな。
0310デフォルトの名無しさん
2011/08/14(日) 20:34:31.830311デフォルトの名無しさん
2011/08/14(日) 21:45:09.82固定桁数で改行入れて読みにくい文章書く子って未だに居るよね
そういった書き方見ても、書いてる内容見ても、程度が知れるってものだ
0312デフォルトの名無しさん
2011/08/14(日) 21:46:59.96>>302さんおちついてください
0313デフォルトの名無しさん
2011/08/14(日) 22:52:31.950314デフォルトの名無しさん
2011/08/14(日) 23:16:13.06>>311
0315デフォルトの名無しさん
2011/08/14(日) 23:32:34.980316デフォルトの名無しさん
2011/08/15(月) 00:00:50.150317デフォルトの名無しさん
2011/08/15(月) 01:17:16.221人だって?プ
0318デフォルトの名無しさん
2011/08/15(月) 07:40:32.800319デフォルトの名無しさん
2011/08/15(月) 07:45:56.92それにツッコミや茶々入れてる人は当然含めてないよ
0320デフォルトの名無しさん
2011/08/15(月) 08:04:15.290321デフォルトの名無しさん
2011/08/15(月) 10:43:10.13まさかとは思うが、「適当」≠「適切」だと思っている残念な人?
(指示を出すまでもない当たり前のことだから使用には詳細に書いていないけど)適当にやってくれ。
言わせんなよ、恥ずかしい。
0322デフォルトの名無しさん
2011/08/15(月) 11:58:59.290323デフォルトの名無しさん
2011/08/15(月) 13:08:30.17「指示を出すまでもない当たり前のことだから仕様には詳細に書いていないけど1文字目≠2文字目だから」
と自信満々言い切る人間がこの世に存在するという事実が、なんというか、すごいです。
0324デフォルトの名無しさん
2011/08/15(月) 13:12:54.50確かにあんな的外れ恥ずかしくて普通は言えないw
そこをあえて言った勇気に敬意を表するw
0325デフォルトの名無しさん
2011/08/15(月) 14:03:14.42どちらの場合も考慮するのが正しいエンジニアリングだね。
だからと言って、2chの回答にそれを求めるのは間違いだと思うが。
0326デフォルトの名無しさん
2011/08/15(月) 16:31:31.26って言葉を知ってるかい?
0327デフォルトの名無しさん
2011/08/15(月) 16:42:06.950328デフォルトの名無しさん
2011/08/15(月) 16:53:51.04って言葉を知ってるかい?
0329デフォルトの名無しさん
2011/08/15(月) 17:01:32.21仕事なら仕様としての抜けを確認するのが普通だが
2chなら別に通常普通ならこういう動作を求めるであろう答え書いてやれば十分だろ
0330デフォルトの名無しさん
2011/08/15(月) 17:09:41.590331デフォルトの名無しさん
2011/08/15(月) 17:25:26.040332デフォルトの名無しさん
2011/08/15(月) 17:30:18.46指示を出すまでもない当たり前のことが標準化されてない事実にいい加減気付け
0333デフォルトの名無しさん
2011/08/15(月) 17:37:02.852chで指示を出す奴はいない
0334デフォルトの名無しさん
2011/08/15(月) 17:39:37.48他の人にとっては自明でもなんでもなかったって話だね
0335デフォルトの名無しさん
2011/08/15(月) 21:43:57.750336デフォルトの名無しさん
2011/08/16(火) 06:06:50.67http://何が来るかわからない.test.com/何が来るかわからない
上の2つともにマッチさせる正規表現は、どのように書くのでしょうか?
0337デフォルトの名無しさん
2011/08/16(火) 06:27:00.18"何が来るかわからない"が'.'を含むなら上と下は同じになる。
たぶん"何が来るかわからない"に含まれない文字はわかっているはずだし、
ホスト名/ドメイン名部分の"何が来るかわからない"と
パス部分"何が来るかわからない"の文字種は異なるはず。
0338デフォルトの名無しさん
2011/08/16(火) 07:28:43.87例えばこんな感じかな?
(「何が来るかわからない.」という部分が1〜何個続いてもマッチする)
http:\/\/([^.]+\.)+?test\.com\/[^\s]*
URLの検索に使う正規表現は用法によって様々
これで問題あれば>>4のテンプレを埋めて詳細に質問すべし
0339デフォルトの名無しさん
2011/08/16(火) 13:33:04.04>これで問題あれば>>4のテンプレを埋めて詳細に質問すべし
テンプレ云々以前に問題ありまくりだろ
その正規表現だと、例えばこういうのまでマッチするわけだが
http://1249719652/#q=www.test.com/&hl=ja
つか[^\s]*とかもはっきりいって意味不明だし、全然分かってないだろ
0340デフォルトの名無しさん
2011/08/16(火) 15:55:21.23こんなんではどう?
http:\/\/(.*\.)*test.com\/.*
0341デフォルトの名無しさん
2011/08/16(火) 15:58:31.19> 正解を教えてあげればいいのに。
と言いながら、正解を教えず、間違いを教えて騙すのは如何なものかと
0342デフォルトの名無しさん
2011/08/16(火) 16:09:10.46https?:\/\/(?:[^./]+\.)*test.com\/\S*
まだやるならこうじゃね?
RFC的には何でもOKになったんだっけか・・・・?
0343デフォルトの名無しさん
2011/08/16(火) 16:11:47.580344デフォルトの名無しさん
2011/08/16(火) 18:25:00.45スラッシュを含まないとは一言も書かれていないな。
これは".test.com/"がパスの構成部分である可能性を排除しない。
オレはまた>>297からの流れで、スレ住人が試されてんのかと思っちまった。
0345343
2011/08/16(火) 18:44:45.50代わりに [-A-Za-z0-9_:]
0346デフォルトの名無しさん
2011/08/16(火) 18:45:40.850347デフォルトの名無しさん
2011/08/16(火) 18:48:47.820348デフォルトの名無しさん
2011/08/16(火) 18:58:11.170349デフォルトの名無しさん
2011/08/16(火) 21:34:39.53スラッシュを含まないとは書いてないから、別ドメインでも構わないってどんな思考してるんだよ
そういうのを屁理屈っていうんだよ
0350デフォルトの名無しさん
2011/08/16(火) 21:37:56.540351デフォルトの名無しさん
2011/08/16(火) 21:44:07.040352デフォルトの名無しさん
2011/08/16(火) 21:47:25.580353デフォルトの名無しさん
2011/08/17(水) 00:31:19.22これは>>336の要求(「上の2つともにマッチさせる正規表現」)を完全に満たす。
0354デフォルトの名無しさん
2011/08/17(水) 00:38:21.83URLであるとは書かれてないから、ドットの連続も認められるとでも言いたいのか?
ほんと馬鹿じゃね?それより夏休みの宿題は終わったか?
0355デフォルトの名無しさん
2011/08/17(水) 00:47:35.48(=RFC的に無効なURLにはマッチしない)
正規表現を書いてくれるらしいので期待
# まさか「.*」を「ドットの連続」と読んだ
# ってオチじゃないよね...?
0356デフォルトの名無しさん
2011/08/17(水) 00:59:29.07># まさか「.*」を「ドットの連続」と読んだ
># ってオチじゃないよね...?
お前やっぱ馬鹿だったんだな・・・
.* は改行文字を除く1文字の0回以上の繰り返し
したがってRFCの仕様に反してドットの連続も認められるってことになる
まともな正規表現が書けないなら黙ってろよ
0357デフォルトの名無しさん
2011/08/17(水) 01:15:00.570358デフォルトの名無しさん
2011/08/17(水) 01:15:19.79本当に自由に論じて0点喰らうタイプ
0359デフォルトの名無しさん
2011/08/17(水) 01:25:48.910360デフォルトの名無しさん
2011/08/17(水) 01:28:38.50数ヶ月ぶりなんスけど...(^^; ナニコノヒト
> したがってRFCの仕様に反してドットの連続も認められるってことになる
o.k.
つまり「RFCに沿ってドットの連続を認めない
正規表現を書かなければならない」
という意図の発言だったってことね > ドットの連続云々
# だから>355(の前半部)の発言になってるんだけど...
# >357さん、正解です :)
ちなみに、RFC的制限のほんの一例ですが、
ドットによって区切られた各ラベルの先頭及び末尾に
ハイフンを用いてはならないのは当然ご存知ですよね?
(見たところ、この制限を反映させた回答は出ていないようですが...)
では引き続き、>354さんがRFC的に妥当なURLのみ
マッチする(=RFC的に無効なURLにはマッチしない)
正規表現を書いてくれることに期待
0361デフォルトの名無しさん
2011/08/17(水) 01:43:35.22( ゚,_ゝ゚)バカジャネーノ
0362デフォルトの名無しさん
2011/08/17(水) 01:46:11.55それはそれでスレにとって有益なんじゃないか
0363355=360
2011/08/17(水) 01:50:35.97ぃゃ、ワタシもそこはテキトーに済ましときゃ
いい部分じゃないかと思っているんですが
(でないと泥沼にはまるのは目に見えてるんで)、
ワタシじゃなくて>356さんにとっては
譲れない部分みたいなんで...(^^A;;
0364355=360
2011/08/17(水) 01:54:45.51いえ、ワタシは「それは現実的じゃない」派なんで
(従って*ワタシは*正解を出せません)、
だからこそ>356さんの回答に期待している
というわけなのです :)
(相当に自信がおありのようなので)
0365デフォルトの名無しさん
2011/08/17(水) 02:04:23.82他にどんな規定があるのかは知らんが
以前どこかで見たRFC的妥当性を考慮したURLの正規表現は
もはや「ほとんど何にでもマッチするような表現」だったような記憶がある・・・
0366デフォルトの名無しさん
2011/08/17(水) 02:13:33.46携帯メアドの一部を取りこぼしちゃうのは有名な話
0367デフォルトの名無しさん
2011/08/17(水) 10:59:03.550368デフォルトの名無しさん
2011/08/17(水) 18:27:55.920369デフォルトの名無しさん
2011/08/17(水) 19:29:11.74白いカラスがいたからって「カラスは白い」って主張が正しくなるわけじゃない。
0370297
2011/08/17(水) 20:26:18.19で、自分がいい加減な文章を書いたせいで誤解を招く結果になり、申し訳ありません。
自分の意図は、「1文字目と2文字目は異なる」というものでした。
ですから、教えていただいた方法で正しかったですし
おかげで目的のデータを見つける事ができました。
皆さんを試すとかそんな気は一切ありません。
ただ自分の説明がいたらなかっただけです。申し訳ありません。
そして、どうも有り難う御座いました。
0371デフォルトの名無しさん
2011/08/17(水) 20:57:31.71難しい。
0372デフォルトの名無しさん
2011/08/17(水) 20:57:50.760373デフォルトの名無しさん
2011/08/17(水) 21:02:18.650374344
2011/08/17(水) 21:06:37.05ああいう流れの中で>>336が投下されたもんだから、もしかして
「この質問でも先と同じ屁理屈をこねてみせるのか?」と誰か(=336)が
スレ住人を試しているのかと思っちゃった、って話だから気にしなくていいよ。
君のことを言ったわけじゃない。紛らわしくてすまん。
0375think49 ◆bKk/qcAKuM
2011/08/17(水) 21:21:28.81https://gist.github.com/770087
0376デフォルトの名無しさん
2011/08/17(水) 21:41:05.100377デフォルトの名無しさん
2011/08/17(水) 21:48:57.620378デフォルトの名無しさん
2011/08/17(水) 21:55:14.270379デフォルトの名無しさん
2011/08/18(木) 10:32:51.420380デフォルトの名無しさん
2011/08/26(金) 13:40:20.270381デフォルトの名無しさん
2011/08/27(土) 16:55:45.83C# 4.0
●検索か置換か?
置き換え
●説明
html内の<dd></dd>タグを検索して<dd>と</dd>のみ置き換えたい
ためしに<dd>とだけやってみましたが、<dd>タグは置き換えされませんでした
●対象データ
<dd>文章1</dd>
<dd>文章2</dd>
●希望する結果
文章1
文章2
0382デフォルトの名無しさん
2011/08/27(土) 19:21:21.890383デフォルトの名無しさん
2011/08/28(日) 08:52:43.84●正規表現の使用環境
Perl
●検索か置換か?
置換
●説明
数が一桁の場合、0を加えて二桁に整形したい
●対象データ
2010年5月9日
2011年11月12日
2011年4月30日
2011年6月1日
2011年8月20日
●希望する結果
2010-05-09
2011-11-12
2011-04-30
2011-06-01
2011-08-20
0384デフォルトの名無しさん
2011/08/28(日) 09:23:11.79\1-\2-\3
-(\d)(?=[^\d]|\n)
-0\1
0385デフォルトの名無しさん
2011/08/28(日) 10:41:45.33ありがとうございます
0386デフォルトの名無しさん
2011/08/28(日) 16:51:25.87http://*.akamaihd.net/*/*/*.jpg
↓
http://*.akamaihd.net/*/*/o.jpg
.replace(/(http:\/\/[^/]+\.akamaihd\.net\/(.+?\/){2}.+?-).+\.jpg$/i,"$1o.jpg")
http://*.fc2.com/*/*/*/*/*/*.jpg
↓
http://*.fc2.com/*/*/*/*/*/digest_*.gif
.replace(/(http:\/\/[^/]+\.fc2\.com\/(.+?\/){5}.+?-).+\.jpg$/i,"$1digest_$2.gif")
0387デフォルトの名無しさん
2011/08/28(日) 17:23:14.67/[^/]+\.jpg
/o.jpg
/([^/]+)\.jpg
/digset_\1.gif
0388デフォルトの名無しさん
2011/08/28(日) 17:27:49.72^(http:\/\/[^./]+\.akamaihd\.net\/(?:[^/]+\/){2})[^./]+\.jpg$
^(http:\/\/[^./]+\.fc2\.com\/(?:[^/]+\/){5})([^./]+)\.jpg$
0389デフォルトの名無しさん
2011/08/28(日) 18:09:38.56.replace(/^(http:\/\/[^./]+\.akamaihd\.net\/(?:[^/]+\/){2})[^./]+\.jpg$/i,"$1/o.jpg")
.replace(/^(http:\/\/[^./]+\.fc2\.com\/(?:[^/]+\/){5})([^./]+)\.jpg$/i,"$1/digset_\1.gif")
0390デフォルトの名無しさん
2011/08/28(日) 18:44:06.57>$1/o.jpg
>$1/digset_\1.gif
なんでわざわざ改悪するんだよ?馬鹿なの?死ぬの?
0391デフォルトの名無しさん
2011/08/28(日) 19:04:41.070392デフォルトの名無しさん
2011/08/28(日) 19:21:09.39.replace(/^(http:\/\/[^./]+\.akamaihd\.net\/(?:[^/]+\/){2})[^./]+\.jpg$)
.replace(/^(http:\/\/[^./]+\.fc2\.com\/(?:[^/]+\/){5})([^./]+)\.jpg$)
.replace(/^(http:\/\/[^./]+\.akamaihd\.net\/(?:[^/]+\/){2})[^./]+\.jpg$/o.jpg)
.replace(/^(http:\/\/[^./]+\.fc2\.com\/(?:[^/]+\/){5})([^./]+)\.jpg$/digset_\1.gif)
/([^/]+)\.jpg
/digset_\1.gif
の入れ方を教えてください
0393デフォルトの名無しさん
2011/08/28(日) 19:37:53.37あと言語が何なのか言っといたほうがいい
0394デフォルトの名無しさん
2011/08/28(日) 21:01:52.17すいません 言語は分かりませんが
普通のユーザースクリプトに使用します。
分かる人は正解を教えてください
おねがいします
0395デフォルトの名無しさん
2011/08/28(日) 23:59:16.34もちろん必要ない。
0396デフォルトの名無しさん
2011/08/29(月) 00:55:09.24言語もソフト・アプリ名も言わないの?
それじゃ不明瞭極まりない
何の「普通のユーザースクリプト」か、くらいは説明できるでしょ
最初からテンプレに沿って質問を書いたほうが早道なのになー
0397デフォルトの名無しさん
2011/08/29(月) 01:07:04.980398デフォルトの名無しさん
2011/08/29(月) 02:16:27.36ウインドウズのブラウザ(chrome)のユーザースクリプト(拡張)に使うんですけど
script.jsです
0399デフォルトの名無しさん
2011/08/29(月) 02:39:44.50location.href
.replace(/^(http:\/\/[^/]+\.ggpht\.com\/(?:[^/]+\/){4})s[^/]+\/([^/]+\.[^/]+)$/, "$1$2")
.replace(/^(http:\/\/[^/]+\.googleusercontent\.com\/(?:[^/]+\/){4})[^/]+\/([^/]+\.[^/]+)$/, "$1$2")
.replace(/^(http:\/\/[^/]+\.bp.blogspot.com\/(?:[^/]+\/){4})[^/]+\/([^/]+\.[^/]+)$/, "$1$2")
.replace(/^(http:\/\/.+?\.photobucket\.com\/(.+?\/){3})th_(.+?\.[^/]+)$/i,"$1$3")
.replace(/^(http:\/\/img\.pics\.livedoor\.com\/(.+?\/){3}.+?-).+\.jpg$/i,"$11024.jpg")
);
if(url !== location.href){
location.replace(url);
}
0400デフォルトの名無しさん
2011/08/29(月) 02:45:32.26のような形式で
>>386の置換がが動作する記述を教えて欲しいのです。
0401デフォルトの名無しさん
2011/08/29(月) 03:51:28.85Google Chromeのユーザースクリプトね
最初にちゃんと説明しようぜ
.replace(/(http:\/\/[^/]+\.akamaihd\.net\/(?:[^/]+\/){2})([^/]+\.jpg)$/i,"$1o.jpg")
.replace(/(http:\/\/[^/]+\.fc2\.com\/(?:[^/]+\/){5})([^/]+)\.jpg$/i,"$1digest_$2.gif")
ちなみにこのスクリプトの言語はJavaScriptですよ
だからscript.jsと、jsが付いてる
0402デフォルトの名無しさん
2011/08/29(月) 04:00:33.680403デフォルトの名無しさん
2011/08/29(月) 10:03:56.24Excel VBA
●検索か置換か?
置換
●説明
<>で囲まれた文字列を空白に置換したい。
●対象データ
あいうえお<ほげほげ>かきくけこ
みかん<りんご<すいか>ぶどう>メロン
●希望する結果
あいうえおかきくけこ
みかんメロン
---
検索:<*>
置換:
---
というふうにすると、
一番目の例に対してはうまくいくのですが、入れ子になっている場合にうまくいきません。
↓のような結果になってしまいます。
みかんぶどう>メロン
お願いします。
0404デフォルトの名無しさん
2011/08/29(月) 11:07:11.10で何度か置換
0405デフォルトの名無しさん
2011/08/29(月) 12:11:43.97<(?:[^<>]*<[^<>]*>)*[^<>]*>
0406デフォルトの名無しさん
2011/08/29(月) 12:26:37.49いちご<みかん<りんご<ぶどう>パイナップル>マンゴー>レモン
0407デフォルトの名無しさん
2011/08/29(月) 13:52:51.510408デフォルトの名無しさん
2011/08/29(月) 17:17:06.32<(?:[^<>]*<)*(?:[^<>]*>)*[^<>]*>
括弧の対応関係を保証するなら複数回マッチさせる必要がある
0409デフォルトの名無しさん
2011/08/29(月) 18:42:33.91ありがとうございます
しかし
.replace(/(http:\/\/[^/]+\.akamaihd\.net\/(?:[^/]+\/){2})([^/]+\.jpg)$/i,"$1o.jpg")
.replace(/(http:\/\/[^/]+\.fc2\.com\/(?:[^/]+\/){5})([^/]+)\.jpg$/i,"$1digest_$2.gif")
で動作しませんでした
.replace(/^(http:\/\/[^/]+\.akamaihd\.net\/(?:[^/]+\/){2})([^/]+\.jpg)$/i,"$1o.jpg")
.replace(/^(http:\/\/[^/]+\.fc2\.com\/(?:[^/]+\/){5})([^/]+)\.jpg$/i,"$1digest_$2.gif")
でも駄目でした
0411デフォルトの名無しさん
2011/08/29(月) 21:48:15.16ttp://userscripts.org/scripts/review/87889
ぐぐってみたらベースはこれみたいだけど、ちゃんと @include 追加してるのかね?
0412デフォルトの名無しさん
2011/08/30(火) 02:23:53.96ああすまん、先頭の^をコピペミスしてたな
.replace(/^(http:\/\/[^/]+\.akamaihd\.net\/(?:[^/]+\/){2})([^/]+\.jpg)$/i,"$1o.jpg")
.replace(/^(http:\/\/[^/]+\.fc2\.com\/(?:[^/]+\/){5})([^/]+)\.jpg$/i,"$1digest_$2.gif")
が正しい
まあ、あっても無くても動作するんだけどな
後は>>411が指摘してくれた通り@includeでしょ
0413デフォルトの名無しさん
2011/08/30(火) 23:14:48.30@includeを登録するのを忘れていました
>>412
動作しました
ありがとうございましたm(__)m
0414デフォルトの名無しさん
2011/08/31(水) 23:22:12.28^([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$
を使ってメールアドレスの書式チェックを行っているんですが、
40文字とか多めの文字数で不一致の文字列を試すと、
フリーズしてしまいます。
一致するケースは問題ないんですが。。。
一致しない時はバックトラッキング?が発生している?
実装言語はaspです。
対象文字列が長くて不一致のケースでも、
動作に問題のない一般的なメールアドレスを許容する表現があれば教えて下さい
0415デフォルトの名無しさん
2011/08/31(水) 23:49:58.590416デフォルトの名無しさん
2011/09/01(木) 02:38:37.05なにがやりたかったんだこれ
0417デフォルトの名無しさん
2011/09/01(木) 08:59:22.45リカバリーする、という方針なら適当なパターンでやればいい。
実際に使われているアドレスでもエラーになるかもしれないが、厳密にマッチ
する奴が欲しいなら、RFC 5322 正規表現、とでも検索すればむたくた長い奴が
出てくるからそこらへんを参考に。
0418デフォルトの名無しさん
2011/09/01(木) 13:10:51.42'^\;'とかいたらマッチしません
次に ^\;.* と書いたらマッチするものの
行頭に;がある行の一列すべてがマッチしてしまいます
一体どう書けばよいのでしょうか?
0419デフォルトの名無しさん
2011/09/01(木) 13:25:11.38とりあえずセミコロンに \ はいらない
0421デフォルトの名無しさん
2011/09/01(木) 14:56:50.28^;
0422デフォルトの名無しさん
2011/09/01(木) 15:54:21.54できました。どうもありがとうございます
0423デフォルトの名無しさん
2011/09/01(木) 16:54:17.500424デフォルトの名無しさん
2011/09/03(土) 11:25:41.47現在、ニコ生用にゆっくりがコメントを読み上げるソフトウェアを開発しております。
環境は Mac Objective-C でライブラリに RegexKit を利用しております。
質問は正規表現自体に関するものです。
「ww」などを「わらわら」と読ませるために
[WwWw][WwWw]+
とやっているのですが、
「ないすw」など、一文字の「w」記号を「わら」と読ませるのに苦労しております。
「w」全てで引っ掛けるのではなく、
英単語ではないもののみにしようとしております。
なので、
what -> x
いいw -> ok
w -> ok
how -> x
などというような判定を行いたいです。
対象は「大文字小文字、全角半角」のwです。
もしよろしければ、アドバイスいただけないでしょうか。
よろしくお願いします。
0425デフォルトの名無しさん
2011/09/03(土) 11:39:21.17判定は [^a-zA-Z]*[WwWw][^a-zA-Z]*
としてできているのですが、
「わら」とおきかえる場所は真ん中のみにしたいです。
上記の判定式のまま書くと、
「いいw」 -> 「わら」
となります。
これを
「いいワラ」
としてやりたいです。
0426デフォルトの名無しさん
2011/09/03(土) 11:40:40.28何度も申し訳ありません。
0427デフォルトの名無しさん
2011/09/03(土) 11:40:53.17s/([ぁ-んァ-ン亜-�Kー])([wWwW]+)$/$1わら/g;
0428デフォルトの名無しさん
2011/09/03(土) 11:41:28.43(?<![a-vx-zA-VX-Z])([Ww]+)(?![a-vx-zA-VX-Z])
前後に wW 以外のアルファベットが含まれていない [wW]+ にヒット。
0429デフォルトの名無しさん
2011/09/03(土) 11:46:35.45すいません。文字化けで読めないです。
>>428
かなりおしいですw
少し試しましたが、文頭と文末以外だとOKっぽいです。
0430デフォルトの名無しさん
2011/09/03(土) 12:06:26.64↓
$1わら
0431デフォルトの名無しさん
2011/09/03(土) 12:24:46.64以下のような順番に置き換えていく実装で期待通りの動作をしました。
集約できておりませんが、
計算量的に問題になっていないので、特にバグがなければこれでいきます。
NSMutableString *subjectString = [NSMutableString stringWithString:kanjiString];
NSString *regexString = @"[WwWw][WwWw]+";
NSString *replacementString = @" ワラワラ ";
[subjectString match:regexString replace:RKReplaceAll withFormat:replacementString];
regexString = @"(?<![a-vx-zA-VX-Z])([WwWw]+)(?![a-vx-zA-VX-Z]) ";
replacementString = @" ワラ ";
[subjectString match:regexString replace:RKReplaceAll withFormat:replacementString];
regexString = @"^([WwWw]+)(?![a-vx-zA-VX-Z])";
replacementString = @" ワラ ";
[subjectString match:regexString replace:RKReplaceAll withFormat:replacementString];
regexString = @"(?<![a-vx-zA-VX-Z])([Ww]+)$";
replacementString = @" ワラ ";
[subjectString match:regexString replace:RKReplaceAll withFormat:replacementString];
0432デフォルトの名無しさん
2011/09/03(土) 12:50:33.80しかし、これが分からん
[WwWw][WwWw]+
こうじゃないの?
[WwWw]+
全角半角も変わってるから注意
0433デフォルトの名無しさん
2011/09/03(土) 12:51:36.21wwwwwwwww → ワラワラ
w → ワラ
と書いてあるだろ
0434デフォルトの名無しさん
2011/09/03(土) 12:57:59.24[WwWw][WwWw]+ = [WwWw]{2,}
[WwWw]+ = [WwWw]{1,}
つまり
[WwWw]{1,} ⊃ [WwWw]{2,}
それなのに [WwWw]+ も ワラ に置換するのはおかしいだろ
0435デフォルトの名無しさん
2011/09/03(土) 13:14:35.80ヒットしないから無問題。つまり無駄な箇所。
0436デフォルトの名無しさん
2011/09/03(土) 13:16:19.84ああすまん、2文字以上の場合と理解してたのに勘違いしちまった
>「ww」などを「わらわら」と読ませるために
2文字以上でワラワラね
むしろ他の場所の[WwWw]+が微妙におかしいのか
でも全半角もおかしいぞーWWWWWwwwwwWWWWWwwwww
0437デフォルトの名無しさん
2011/09/03(土) 14:43:51.82草伸びまくってる
0438デフォルトの名無しさん
2011/09/03(土) 14:48:28.100439デフォルトの名無しさん
2011/09/03(土) 15:09:20.110440デフォルトの名無しさん
2011/09/03(土) 15:59:22.81ワロタwwwwww ○
w ○
W杯 ×
how big is ur penis? ×
www.example.com ×
0441デフォルトの名無しさん
2011/09/03(土) 18:32:34.71(?<![a-vx-zA-VX-Z])([Ww]+)(?![a-vx-zA-VX-Z])|^([Ww]+)(?![a-vx-zA-VX-Z])
0442デフォルトの名無しさん
2011/09/03(土) 18:58:48.92お前さ否定戻り読み全然分かってねーだろ
^([Ww]+)(?![a-vx-zA-VX-Z]) の存在意義が皆無
戻り読みって言いたいだけちゃうかと
0443デフォルトの名無しさん
2011/09/04(日) 11:41:44.970444デフォルトの名無しさん
2011/09/05(月) 23:42:06.78●正規表現の使用環境
秀丸
●検索か置換か?
置換
●説明
ダブルクォーテーションの中の文字を空白扱いにしたい
●対象データ
test="daikon"
test="daikon ninjin"
test="daikon ninjin tamanegi"
●希望する結果
test=""
test=""
test=""
0445デフォルトの名無しさん
2011/09/05(月) 23:44:08.68""
0446デフォルトの名無しさん
2011/09/05(月) 23:56:05.76""
0447デフォルトの名無しさん
2011/09/06(火) 01:02:02.49""
0448デフォルトの名無しさん
2011/09/06(火) 21:21:28.66>>447さんの正規表現で正常動作しました。
0449デフォルトの名無しさん
2011/09/07(水) 20:48:36.46調べてみたのですが他言語用ばかりで試しに実装して動かしてみましたがエラーになってしまいました
0450デフォルトの名無しさん
2011/09/07(水) 21:13:57.96MSDNにオンラインもあるよ
http://msdn.microsoft.com/ja-jp/library/cc392020.aspx
0451デフォルトの名無しさん
2011/09/07(水) 22:05:17.09わかり易く解説されてるとことかないでしょうか?
0453デフォルトの名無しさん
2011/09/07(水) 23:36:53.10http://doc.okkez.net/static/191/doc/spec=2fregexp.html#backtrack
0454デフォルトの名無しさん
2011/09/08(木) 19:13:57.41>>450みて解決できたの?
0455デフォルトの名無しさん
2011/09/08(木) 22:28:14.59C#
●検索か置換か?
置換
●説明
<b></b>で挟まれた文章を抜き出す
●対象データ
<table width="100%" border="1" cellspacing="0" cellpadding="10">
<tr><td><b>ERROR!!<br><br>多重書き込みです。 あと 17秒お待ちください。</b></td></tr>
</table>
●希望する結果
ERROR!!<br><br>多重書き込みです。 あと 17秒お待ちください。
====
これを実行するのに、
responseStr = System.Text.RegularExpressions.Regex.Replace(
responseStr,
@"(.|\n)*<b>(?<sentence>.*?)</b>(.|\n)*",
"${sentence}");
とやっているのですが、
「任意の一文字(改行文字も含む)」
という表現は(.|\n)が最適なのでしょうか。
もっとベターなやりかたがあったら教えて下さい。
0456デフォルトの名無しさん
2011/09/08(木) 22:42:08.09皆様のおかげで無事にアプリを公開することができました。
ありがとうございます。
Macでニコ生を放送したいかたがおられましたら、
是非ご活用ください。
【ゆっくろいど】http://www.yukkuroid.com/yukkuroid/
0457デフォルトの名無しさん
2011/09/08(木) 22:58:04.04RegexOptions.Singleline
0458デフォルトの名無しさん
2011/09/08(木) 23:15:59.05ありがとうございます
0459デフォルトの名無しさん
2011/09/09(金) 00:38:15.69まぁフクロウ本でも細かく説明されているほど定番なんだろうけど
0460デフォルトの名無しさん
2011/09/09(金) 08:30:36.520461デフォルトの名無しさん
2011/09/09(金) 08:44:35.22そのサイト、素敵やん?w
あんまスレと関係ない質問だけどトップのバナーって、
なぜ画像分割してるの?結構こういう画像分割してるサイトあるけど、ひとつにまとめたら
ダメなのかなっていつも思ってしまう。
0462デフォルトの名無しさん
2011/09/09(金) 08:45:18.590463デフォルトの名無しさん
2011/09/09(金) 09:02:38.820464デフォルトの名無しさん
2011/09/09(金) 10:06:21.760465デフォルトの名無しさん
2011/09/09(金) 12:35:55.66なるほど!どうもです。
0466デフォルトの名無しさん
2011/09/09(金) 14:55:57.830467デフォルトの名無しさん
2011/09/09(金) 14:57:35.220468デフォルトの名無しさん
2011/09/10(土) 13:10:40.29数字だけのブロック("0000"と"1111")を取り出したい場合のパターンを教えてください。
自分で思いつくのは下記。もっとスマートなやりかたないでしょうか
1.\s→\r\nに置換
2.^(\d+)$→●$1に置換
3.^[^●].*$→空白に置換
4.●→空白に置換
ちなみにサクラエディタです。
よろしくお願いいたします。
0469デフォルトの名無しさん
2011/09/10(土) 13:19:58.690470デフォルトの名無しさん
2011/09/10(土) 13:48:11.760471デフォルトの名無しさん
2011/09/10(土) 14:28:04.84テンプレに沿って処理前・処理後を示してくれてないからよく分からんけど
\s*\w*[a-z]+\w*\s*|\b\s+\b
\n
改行も揃えたければ
^\n|\n$
空文字
サクラエディタでは試してない、悪しからず
※空白と書くと、通常は空白文字=スペース類のことを指すぞ
0472デフォルトの名無しさん
2011/09/10(土) 14:54:54.03(?:^|\s)\d*\D\S*(?=\s|$)
0473472
2011/09/10(土) 14:57:02.29数字のみなら (?:^|\s)\d+(?=\s|$)
0474デフォルトの名無しさん
2011/09/10(土) 16:16:05.240475471
2011/09/10(土) 16:33:45.00一発で済むように改良
(?:\s*\w*[a-z]+\w*)*\s*(\d+)\s*(?:\w*[a-z]+\w*\s*)*\n*
$1\n
0477デフォルトの名無しさん
2011/09/10(土) 23:38:59.46●正規表現の使用環境
EmEditor
●検索か置換か?
検索
●検索対照データ
(abcdefg:;[]あいうえお))
●希望する結果
(で始まり、途中にいろいろあっても、))で終わる対象データを検索したいです。
すみませんが、よろしくお願いします。
0478デフォルトの名無しさん
2011/09/10(土) 23:43:20.20エスケープの仕方がわからんだけかな
それともホントは対象データがもっと込み入ってんの?
0479デフォルトの名無しさん
2011/09/10(土) 23:44:11.210480デフォルトの名無しさん
2011/09/10(土) 23:48:51.89\(.*\)\)と\(.*?\)\)の違いは、以下で試せばわかる
(abcdefg:;[]あいうえお))かきくけこ))
0481477
2011/09/11(日) 02:09:01.68おおお、ありがとうございます、すごいです。
あ、はい、エスケープの仕方がわからんだけかと思います;;
\(.*\)\)と\(.*?\)\)の両方を試してみました。
2つの違いがわかりました。2つ教えてもらってありがとうございました。
0482デフォルトの名無しさん
2011/09/12(月) 00:05:32.23●正規表現の使用環境
EmEditor
●検索か置換か?
置換
●対照データ
;AA[aa][ab][ac][ad]・・・・・[zw][zx][zy][zz];AB[aa][zy]AC[ab]
;AA[aa][ab][ac][ad]・・・・・[zw][zx][zy][zz];AB[df]AC[aa][fb]
;AA[aa][ab][ac][ad]・・・・・[zw][zx][zy][zz];AB[bc][fh]AC[ge][eg]
●希望する結果
;AA[ac][ad]・・・・・[zw][zx][zz];AB[aa][zy]AC[ab] ←;AAの後ろから[aa][zy][ab]を削除
;AA[ab][ac][ad]・・・・・[zw][zx][zy][zz];AB[df]AC[aa][fb] ←;AAの後ろから[df][aa][fb]を削除
;AA[aa][ab][ac][ad]・・・・・[zw][zx][zy][zz];AB[bc][fh]AC[ge][eg] ←;AAの後ろから、[bc][fh][ge][eg]を削除
すみませんが、よろしくお願いします。
0483デフォルトの名無しさん
2011/09/13(火) 01:22:44.15;AA [ac][ad]・・・・・[zw][zx] [zz];AB[aa][zy]AC[ab] ←;AAから;ABまでの[aa][zy][ab]を削除
;AA [ab][ac][ad]・・・・・[zw][zx][zy][zz];AB[df]AC[aa][fb] ←;AAから;ABまでの[df][aa][fb]を削除
;AA[aa][ab][ac][ad]・・・・・[zw][zx][zy][zz];AB[bc][fh]AC[ge][eg] ←;AAから;ABまでの[bc][fh][ge][eg]を削除
この結果。。。ムリだ
0484デフォルトの名無しさん
2011/09/13(火) 01:24:30.46正規表現だけじゃ無理
マクロでこんな感じにすればいけるんじゃね?試してないけど
document.selection.SelectAll();
document.selection.Text = document.selection.Text.replace(/^;AA((?:\[[a-z]{2}\])*);AB((?:\[[a-z]{2}\])*)AC((?:\[[a-z]{2}\])*)$/gm, function(a, b, c, d) {
var e = (c + d).replace(/^\[|\]$/g, '').split(']['),
f = b.replace(/^\[|\]$/g, '').split('][').filter(function(g) {
for (var i = 0, l = e.length; i < l; i++) if (e[i] != g) return g;
}).join('][');
return ';AA['+ f + '];AB' + c + 'AC' + d;
});
0485482
2011/09/14(水) 01:36:56.36>>484 正規表現だけでは無理だけど、マクロでなんとかなりますか、ありがとうございます。
・・・ただ僕はマクロっていうと、マウスのクリックを連打させるツールを使うくらいしかわかってないもので、>>484さんの書かれてるすごい内容をどうやって、どうすれば、どのように使えるのか、ほとんど理解できませんorz
何ヶ月、またはそれ以上たって、もっとマクロに詳しくなって理解できるようになったら、この方法を試させてもらいたいと思いますorz
0486デフォルトの名無しさん
2011/09/14(水) 09:13:08.91無料版はマクロ機能ないんだっけか?
0487デフォルトの名無しさん
2011/09/14(水) 13:16:37.750488デフォルトの名無しさん
2011/09/14(水) 14:25:13.450489デフォルトの名無しさん
2011/09/14(水) 14:29:29.200490デフォルトの名無しさん
2011/09/14(水) 14:32:37.160491デフォルトの名無しさん
2011/09/14(水) 15:13:53.74だからJScriptとVBScript、どちらでもOk
0492デフォルトの名無しさん
2011/09/16(金) 17:59:34.52vxeditor
●検索か置換か?
置換
●説明
「a」という文字を正規表現で検索し、「C:\test\test2」に置換するために、
検索語:[a-z] もしくは \w
置換語:C:\test\test2
と置換したのですが結果は「C: est est2」となってしまいます。
置換語を「C:\\test\\test2」としてみたら今度は「\test2」となりました。
●対象データ
a
●希望する結果
C:\test\test2
お願いします
0493デフォルトの名無しさん
2011/09/16(金) 18:19:24.57C:\\test\\test2
\tはタブ
0494デフォルトの名無しさん
2011/09/16(金) 18:20:23.15アルファベットのうちの a だけが対象なら [a-z] や \w にする理由が分からん
a
↓
C:\\test\\test2
で十分だろ
0495デフォルトの名無しさん
2011/09/16(金) 18:26:13.83C:\\test\\test2
でもうまくいってないのか。
Perl互換の正規表現にしてもうまくいかない?
0496デフォルトの名無しさん
2011/09/16(金) 18:54:40.15置換語 C:\\test\\test2 で普通にいけるじゃねーか
正規表現1、正規表現2どっちも問題なかったぞ
0497デフォルトの名無しさん
2011/09/16(金) 19:01:51.52Smartyの開始は {{ で修了は }} としています。
現在は正規表現で {{.+}} を指定しているのですが
<option value="{{$w.cd}}"{{$w.selected}}>ABCDE{{$w.name}}</option>
の場合、Smarty外の 「"」 「>ABCDE 」 も強調表示されています。。
これを何とか強調表示されない指定を教えて下さい神様
0498デフォルトの名無しさん
2011/09/16(金) 19:24:57.40VxEditor使いだが、
【マクロは】帰ってきたVxEditor【DMonkey】
http://hibari.2ch.net/test/read.cgi/software/1187267009/431
使ってるバージョンが古いのでは?今出てる、Ver 1.0.1を使えば問題ない。
0499デフォルトの名無しさん
2011/09/16(金) 19:41:32.39秀丸は知らんけど、最短一致を使う。
{{.+?}}
または
{{[^}]+}}
かな
0501497
2011/09/16(金) 23:33:54.30うおおおおおおおっ!
上はNGでしたが下はバーーーーーーーーーッチリでしたあああ!
あざーすあざーす
「最短一致」勉強します!
教えていた表記も勉強します!
師匠!ありがががとうございましたあ!
0502デフォルトの名無しさん
2011/09/17(土) 08:14:25.220503デフォルトの名無しさん
2011/09/17(土) 12:23:10.26oracle(regexp_replace)
●検索か置換か?
置換
●説明
::でタグ名が記載されたデータを<>タグに変換したい
●対象データ
:dog:I like dog
:cat:I like cat
●希望する結果
<dog>I like dog</dog>
<cat>I like cat</cat>
0504デフォルトの名無しさん
2011/09/17(土) 12:25:28.34regexp_replace(data,'^:([^:]*):(.*)$','<\1></\1>\2',1,0,'m');
<dog></dog>I like dog
<cat></cat>I like cat
はできるんですが
regexp_replace(data,'^:([^:]*):(.*)$','<\1>\2</\1>',1,0,'m');
としたら
</dog> like dog
</cat> like cat
となってしまいます。。。。
0505503
2011/09/17(土) 12:53:20.88CRLF→LFに変換してから処理すれば問題ありませんでした。
Microsoft .NET Framework (使用ソフトウェアは、Repl-Ace on .NETです。)
●検索か置換か?
置換
●説明
対象データを希望する結果に置換したいです。
対象データ(置換の前後)のフォーマットは、●詳細に書きます。
●対象データ
ABCD 12:34:56 阿あアアAaAa1+-○× : 阿あアアAaAa1+-○×
EFGH 00:59:59 阿あアアAaAa1+-○× : 阿あアアAaAa1+-○×
●希望する結果
ABCD\t12:34:56\t阿あアアAaAa1+-○×\t:\t阿あアアAaAa1+-○×
EFGH\t00:59:59\t阿あアアAaAa1+-○×\t:\t阿あアアAaAa1+-○×
※\tはタブという意味で書いてあります。
長いので続きます。
0507506 ◆36l9l1q57CRh
2011/09/17(土) 23:12:34.89■置換前のフォーマット
01.半角 英字 4文字(固定長)
02.半角 スペース(固定長)
03.半角 数字 24時間表示の時刻(固定長)
04.半角 スペース(固定長)
05.全角/半角 漢字/ひらがな/カタカナ/空白/記号等(可変長)★
06.半角 空白(固定長)
07.半角 :(固定長)
08.半角 空白(固定長)
09.全角/半角 漢字/ひらがな/カタカナ/空白/記号等(可変長)★
10.CR+LF
□置換後のフォーマット
01.半角 英字 4文字(固定長)
02.タブ(固定長)
03.半角 数字 24時間表示の時刻(固定長)
04.タブ(固定長)
05.全角/半角 漢字/ひらがな/カタカナ/空白/記号等(可変長)
06.タブ(固定長)
07.半角 :(固定長)
08.タブ(固定長)
09.全角/半角 漢字/ひらがな/カタカナ/空白/記号等(可変長)
10.CR+LF
長いので続きます。
0508506 ◆36l9l1q57CRh
2011/09/17(土) 23:13:05.4405と09の部分にそれらの文字列があった場合でもそれは残しておきたいです。
例:
・対象データ(1と+の間に07の:、aとAの間に03の日付)
ABCD 12:34:56 阿あアアAaAa1:+-○× : 阿あアアAa12:34:56Aa1+-○×
・希望する結果
ABCD\t12:34:56\t阿あアアAaAa1:+-○×\t:\t阿あアアAa12:34:56Aa1+-○×
以上、どうかよろしくお願いします。
0509506 ◆36l9l1q57CRh
2011/09/17(土) 23:18:17.9505と09の位置には、06-08の「 : 」が入る可能性はあるのですが、
実際には入る可能性は低いので、もし無理でしたらこの部分は、
入らない事が前提で構いません。
よろしくお願いします。
0510デフォルトの名無しさん
2011/09/17(土) 23:26:14.44プログラムで実現しろよ。
正規表現に拘ることはない。
0511デフォルトの名無しさん
2011/09/17(土) 23:35:03.01\1\t\2\t\3\t\4\t\5
たしかに長い
0512デフォルトの名無しさん
2011/09/17(土) 23:38:50.63そういうとんでもないフォーマットをTSVに直すってことなんだろうけど…
0513デフォルトの名無しさん
2011/09/17(土) 23:39:25.670514デフォルトの名無しさん
2011/09/17(土) 23:43:19.70\1\t\2\t\3\t\4\t\5
こうか
0515デフォルトの名無しさん
2011/09/18(日) 01:38:41.83それだと
" : "
こういった文字列が05に含まれていた場合変になるな
05、09は色々条件書いてるけど等ってなってるから
曖昧なんだよなー・・・
0516デフォルトの名無しさん
2011/09/18(日) 02:13:05.195に" :"が入った場合は結果が一意に決められなくなるので無視するしかないかと
0517デフォルトの名無しさん
2011/09/18(日) 04:44:55.1606と08が全く同じだけれど、間違いではないのかな?
0518デフォルトの名無しさん
2011/09/18(日) 04:47:52.57それから(固定長)の意味を教えてください。
0519デフォルトの名無しさん
2011/09/18(日) 13:32:27.04Flexible Renamer8.4というファイル名変更ソフトに「条件付正規表現」というのがあるのですが、どう使うのか分かりません。
ネットで調べるとPearl、PHPなんかで、同じような書式があるようなんですが、挙動がまったく理解できません。
ネット上には
(?(?=[^A-Z]*[A-Z])\d{2}-[A-Z]{3}-\d{2}|\d{2}-\d{2}-\d{2})
という式があり、aをアルファベット、dをアルファベットとして上式で検索すると
dd-dd-ddとdd-aaa-ddがヒットする、と書いてありますが、dd-aaa-ddはヒットするものの、
dd-dd-ddがヒットしません。
それからよくわかりませんが、
(?(1以上の数字)\d{2}-[A-Z]{3}-\d{2}|\d{2}-\d{2}-\d{2})
とするとdd-dd-ddがヒットします。
自分の理解では条件式にある正規表現があれば真の場合の正規表現をマッチさせ、
条件式にある正規表現がなければ偽の場合の正規表現をまっちさせるのだと理解するのですが、
どうも条件式の書き方と制約、そしてその結果と条件式が真、偽のときにどういう挙動をとるのかがよくわかりません。
誰か分かる人教えてください。すみません教えて君でorz もうアタマが痛くなるくらい調べましたが
私には無理でした。
(?=なんとか)あれ|それ ← なんとかあれ または なんとかそれ にマッチしてあれ・それを取り出す「先読み」。
1111A11-DEC-12
1112A11-12-12
1234B12-JUN-01
C31-MAR-12
D12-03-11
外側の(?....)の方は、わたしじゃわからないわ
0521デフォルトの名無しさん
2011/09/18(日) 14:44:44.43if 〜 then 〜 else 〜 と同じ
> (?(?=[^a-z]+[a-z])\d{2}-[a-z]{3}-\d{2}|\d{2}-\d{2}-\d{2})
「(?=[^a-z]*[a-z])」という条件(英字が0文字以上の繰り返しの後に、英字1文字が
出現する)にマッチしたら、真パターンである「\d{2}-[a-z]{3}-\d{2}」でマッチングが行われる。
そうではないなら、偽パターンである「\d{2}-\d{2}-\d{2}」でマッチングが行われる。
従って「dd-aaa-dd」または「dd-dd-dd」のどちらかの文字列にマッチする。
>(?(1以上の数字)\d{2}-[A-Z]{3}-\d{2}|\d{2}-\d{2}-\d{2})
これはちょっと違う
([a-z]{3}-)?(?(1)\d{2}-[a-z]{3}-\d{2}|\d{2}-\d{2}-\d{2})
例えばこれだと、「[a-z]{3}-」で始まる場合は、「キャプチャグループ1」に記憶される
そして「キャプチャグループ1」が存在するなら、真パターンである「\d{2}-[a-z]{3}-\d{2}」で
マッチングが行われる。
そうではないなら、偽パターンである「\d{2}-\d{2}-\d{2}」でマッチングが行われる。
従って「aaa-dd-aaa-dd」または「dd-dd-dd」のどちらかの文字列にマッチする。
0522521
2011/09/18(日) 14:51:24.41↓
英字以外の文字が0文字以上の繰り返しの後に、英字1文字が
0523520
2011/09/18(日) 15:03:48.05> (?(?=[^A-Z]*[A-Z])\d{2}-[A-Z]{3}-\d{2}|\d{2}-\d{2}-\d{2})
↓
(?([^A-Z]*[A-Z])\d{2}-[A-Z]{3}-\d{2}|\d{2}-\d{2}-\d{2})
0525デフォルトの名無しさん
2011/09/18(日) 15:38:15.08irvineとかで十分と思う。
0526デフォルトの名無しさん
2011/09/18(日) 15:40:35.79死にました。
0527デフォルトの名無しさん
2011/09/18(日) 15:47:18.69ありがとうございます。
>if 〜 then 〜 else 〜 と同じ
そうですよね。そう考えているのですが、条件式の書き方が分からないのと、
結果が分からないのです。さきほどから取り上げている
(?(?=[^A-Z]*[A-Z])\d{2}-[A-Z]{3}-\d{2}|\d{2}-\d{2}-\d{2})
だと、おっしゃられるようにたとえば条件式が真の場合の12-abc-34とか、
偽の場合の12-34-56がヒットするはずですが、実際には偽の場合がヒットしません。
FlexRenamer8.4のバグなんでしょうか?
それから、やはり条件式の書き方がわかりません。上式で条件式を.*とした
(?(.*)\d{2}-[a-z]{3}-\d{2}|\d{2}-\d{2}-\d{2})
としたら、とうぜんすべてが真になるはずなので、dd-aaa-ddがヒットするはずですが、ヒットしません。
同様に条件式を
\d*
\d\d
実際の文字列そのものとしてdd-aaa-dd(12-abc-34など)
としてもうんともすんとも言いませんorz なんでなんですかね???
0528520
2011/09/18(日) 16:09:24.11なら先頭がA-Zの場合、偽になるはず。ソフト入れてないので中途半端ですみません。
(?(?=^[^A-Z])\d{2}-[A-Z]{3}-\d{2}|\d{2}-\d{2}-\d{2})
1234B12-JUN-01
C31-31-12
0529デフォルトの名無しさん
2011/09/18(日) 16:11:40.70おお、そうなんですね。条件式の件はちょっと進歩。しかし偽の場合がマッチしないのは謎。
0530デフォルトの名無しさん
2011/09/18(日) 16:19:15.86たぶんバグなんじゃないかと思う
>やはり条件式の書き方がわかりません。
条件に使えるのは>>524で書いたように(肯定or否定)先読み、(肯定or否定)戻り読み、1以上の数値のいずれか
>(?(.*)\d{2}-[a-z]{3}-\d{2}|\d{2}-\d{2}-\d{2})
「dd-dd-dd」または、直前に「.*」のある「dd-aaa-dd」にマッチさせたいってこと?
それとも「(?=.*)dd-aaa-dd」または「dd-dd-dd」にマッチさせたいってこと?
前者だと (?<=.*) ということになるが、戻り読みは固有長じゃないといけないのでエラーになる
後者だと「.*」は改行以外の0文字以上の繰り返しなので、これでは真パターンのみしか
使われないから、エラーにはならないけど、表現としておかしい
どういう文字列にマッチングさせたいのかいまいち分からない
0531520
2011/09/18(日) 16:37:15.08それと[^A-Z]*[A-Z]にマッチしないのは[^A-Z]のみの連続。11-12-20など。
以上 <おじゃましました>
0532519
2011/09/18(日) 17:10:05.69職場で扱っているファイルを一気に変更するためにいろいろ調べていたら
当ソフトに突き当たり、いろいろいじっていて、マニュアルを見たところ、条件付正規表現
というものがあり、いろいろ調べていたところでした。まだ具体的にこれが使えるのかどうかは
分からず調べていたところです。しかし、このソフト、(?(条件式)真の場合|偽の場合)という形で
使えるんでしょうかね??? 非常に高機能ではあると思うんだけど。
>>520
最初に提示した式は他のサイトにあったコピペです。それがなぜかそのまま動作しないので
こちらに質問してみました。そもそもPHPとperlとかで動作は違うんでしょうが。
http://www.phppro.jp/phpmanual/php/regexp.reference.conditional.html
http://manual.xwd.jp/reference.pcre.pattern.syntax.html 下のほうの条件付サブパターン
どちらにも同じ式が載っています。
0533デフォルトの名無しさん
2011/09/18(日) 18:08:31.74ttp://www.php.net/manual/ja/reference.pcre.pattern.differences.php
ちなみに Flexible Renamer は Boost.Regex ライブラリを使ってるって書いてあるから、
条件付きサブパターンも使えるっぽいんだけどなあ
ttp://www.boost.org/doc/libs/1_34_1/libs/regex/doc/syntax_perl.html
0534デフォルトの名無しさん
2011/09/18(日) 18:19:53.67>(?(?=[^A-Z]*[A-Z])\d{2}-[A-Z]{3}-\d{2}|\d{2}-\d{2}-\d{2})
>だと、おっしゃられるようにたとえば条件式が真の場合の12-abc-34とか、
大文字小文字が合っていないが? 通常大文字小文字は区別される。
0535519
2011/09/18(日) 20:33:03.70正規表現の大文字小文字はどちらでも結果は一緒でした。
どなたかこのソフトできちんと条件付正規表現が動くか試していただけません?
なんか意味がわからないです。
0536デフォルトの名無しさん
2011/09/18(日) 20:38:42.87ここプログラマ板だし
0537デフォルトの名無しさん
2011/09/18(日) 20:39:37.330538520
2011/09/18(日) 20:40:49.13●検索か置換か? 置換
●説明
日付の前の文字を入れ替える
●対象データ
ABC11-12-31 \d{2}-[A-Z]{3}-\d{2}
ABC11-DEC-31 \d{2}-\d{2}-\d{2}
ABC2011-12-31 \d{4}-[A-Z]{3}-\d{2}
ABC2011-DEC-31 \d{4}-\d{2}-\d{2}
●希望する結果
XYZ11-12-31
XYZ11-DEC-31
XYZ2011-12-31
XYZ2011-DEC-31
●コメント:こんな感じか書いて投稿してみた
0539デフォルトの名無しさん
2011/09/18(日) 20:58:44.06条件分岐を使う必然性が感じられないな。対象データはなんか合ってないし。
ABC(?=\d{2}{1,2}-(?:[A-Z]{3}|\d{2})-\d{2}) → XYZ
でいいんじゃね?
0541デフォルトの名無しさん
2011/09/20(火) 02:59:51.01一般社会
●検索か置換か?
検索
●説明
すぐにやれる女を見つけたいです
●対象データ
OL
女子大生
女子高生
キャバ嬢
ヘルス嬢
近所のおばさん
母親
●希望する結果
させこ
やりまん
公衆便所
0542デフォルトの名無しさん
2011/09/20(火) 03:12:07.21お前には一生涯マッチしないっ!
0543デフォルトの名無しさん
2011/09/22(木) 16:07:10.57横、亀ですまんが、バグじゃないよ。
普通にマッチする。
マッチするだろうと思っている対象データがおかしいんでないの。
0544デフォルトの名無しさん
2011/09/22(木) 16:11:56.59D12-03-11
はマッチしないよ
0545デフォルトの名無しさん
2011/09/22(木) 16:15:57.420546デフォルトの名無しさん
2011/09/23(金) 14:38:20.95Microsoft .NET Framework
●検索か置換か?
検索
●説明
下記条件(AND条件)のURLを検索したいです。
・特定のドメイン(yahoo.co.jp)がhttp://直後に含まれない。
・特定の拡張子(jpg,gif)で終わらない。
●対象データ
1.http://yahoo.co.jp/?=abc
2.http://yahoo.co.jp/abc.jpg
3.http://2ch.net/?=abc
4.http://2ch.net/abc.jpg
・・・など複数URL
●希望する結果
3のみを検索したいです。
よろしくお願いします。
0547デフォルトの名無しさん
2011/09/23(金) 14:52:28.060548デフォルトの名無しさん
2011/09/23(金) 14:54:24.49^http://(?!(?:[/]+\.)?yahoo\.co\.jp)[^/]+/.*(?!\.(?:jpg|gif))$
0549デフォルトの名無しさん
2011/09/23(金) 15:26:19.22横レスだけど
それだと
http://2ch.net/abc.jpg
にマッチすると思う
0550デフォルトの名無しさん
2011/09/23(金) 15:57:55.44にしないとだめぽ
0552デフォルトの名無しさん
2011/09/23(金) 18:32:13.71(?!yahoo\.co\.jp)([-_.!~*'()a-zA-Z0-9;/?:@&=+$,%#](?!\.jpg|\.gif))*
0553デフォルトの名無しさん
2011/09/23(金) 19:32:38.77これでおk
0554デフォルトの名無しさん
2011/09/23(金) 23:32:29.420555デフォルトの名無しさん
2011/09/24(土) 01:17:45.25やってみた
0556デフォルトの名無しさん
2011/09/24(土) 01:19:43.580557デフォルトの名無しさん
2011/09/24(土) 01:23:25.360558デフォルトの名無しさん
2011/09/24(土) 02:08:01.06http://(?:(?:[^/]+\.)?yahoo\.co\.jp/|[^/]+/.+\.(?:jpg|gif)$)
にマッチしないものを検索とかじゃダメなのかな?
0559519
2011/09/24(土) 16:28:10.96お返事ありがとうございます。
そうですか。対象データがおかしい、というのがよく分からないのですが、うちでは
・アプリケーション Flexible Renamer v8.4
「高度なリネーム」「正規表現」
・検索の正規表現
(?(?=[^a-z]*[a-z])\d{2}-[a-z]{3}-\d{2}\|\d{2}-\d{2}-\d{2})
(?(?=[^A-Z]*[A-Z])\d{2}-[A-Z]{3}-\d{2}|\d{2}-\d{2}-\d{2})
・OS Win7 HomePremium 64bit
・対象データ たとえば以下の例
d12-03-11.pdf、12-03-11.pdf……ともにマッチせず。
22-asd-12.pdf……マッチする
でNGです。状況を再現したいので、ぜひ実験の詳細を教えてください。
0560デフォルトの名無しさん
2011/09/24(土) 17:48:55.34543ではないが、
>・検索の正規表現
> (?(?=[^a-z]*[a-z])\d{2}-[a-z]{3}-\d{2}\|\d{2}-\d{2}-\d{2})
"|"の前の"\"は不要だよね
それからリネーム方法:−正規表現の右側のボタンを押して、
大文字と小文字を区別するとわかってくるかもしれない
0561デフォルトの名無しさん
2011/09/24(土) 17:49:20.01×12-03-11.pdf
○12-03-11
○d12-03-11
0562デフォルトの名無しさん
2011/09/24(土) 20:39:30.02ありがとうございます! やっと望む結果が出ました! このソフト、拡張子は除外するものと
思い込んでいたことがまずかったみたいです。12-03-11.pdfだと、真の条件でマッチさせる
ことになって、偽の場合になってなかったことが原因のようです。
それに加えて正規表現のスペルミスとかもしてたのかもしれません。スペルミスを防ごうと
WEBからコピペしてたんですが、逆にそれがアダになりました。
たいへん、たいへんお騒がせしました。とても勉強になりました。ありがとうございます。
0563デフォルトの名無しさん
2011/09/25(日) 00:15:30.57Perl5 or Javascript
●検索か置換か?
検索
●説明
ダブルクオートに囲まれた文字列を取得したい
ただ、「\」の次の文字はエスケープされた文字として扱う
●対象データ
"hogefuga"
"hoge\"fuga"
"hoge\\"fuga"
●希望する結果
hogefuga
hoge"fuga
hoge\
上記のようなありきたりな命題にトライしていたのですが、以下の正規表現のうち1ではうまくいくのに2ではうまくいきませんでした
1. /"((?:(?:\\.)|[^"])*)"/
2. /"((?:[^"]|(?:\\.))*)"/
ただ、僕にはこれが両方同じ意味に見えるのです
なぜこの場合、2ではうまくいかないのでしょうか
気になって眠れません
詳しい方解説お願いします
0564デフォルトの名無しさん
2011/09/25(日) 00:33:43.88\ は [^"] を満たしますから、(?:\\.) は永遠にパスしません。
0565デフォルトの名無しさん
2011/09/25(日) 00:38:16.13| は左側から評価されるからね。
0566デフォルトの名無しさん
2011/09/25(日) 00:51:44.06パターン1|パターン2 のとき、パターン1のマッチを調べてダメだったらパターン2のマッチを調べるってことですよ。
ところで、結果はこうですよね。
hogefuga
hoge\"fuga
hoge\\
0567デフォルトの名無しさん
2011/09/25(日) 01:07:16.19なるほど!
2では[^"]がエスケープまで食ってしまってたわけですか
/"((?:[^"\\]|(?:\\.))*)"/
なら同じ意味ですね
分かってしまえばなぜこんなことで悩んでいたのか・・・
これでゆっくり眠れます!
ありがとうございました
0568555
2011/09/25(日) 08:29:07.36^http://(?!([^/]+\.)?yahoo\.co\.jp).+/(?!.*\.(jpg|gif)).*
bregonig.dll Ver.1.43 with Oniguruma 5.9.1
sakura Ver.1.6.4.0 (※)C#で試したかったが、だれかソースくれないか?
>>557 前後に分けるとこうなる。
^http://(?!([^/]+\.)?yahoo\.co\.jp).*
.*/(?!.*\.(jpg|gif)).*
0569デフォルトの名無しさん
2011/09/25(日) 22:36:07.14>^http://(?!([^/]+\.)?yahoo\.co\.jp).+/(?!.*\.(jpg|gif)).*
これでOKそうすな・・・
0570デフォルトの名無しさん
2011/09/27(火) 14:27:43.37どれか3つのやり方がわかりません。
以下は全く動作せず…
^(?=(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])|(?=.*[A-Z])(?=.*[a-z])(?=.*[@_#])).*$
0571デフォルトの名無しさん
2011/09/27(火) 15:00:10.40言ってることがよく分からないけどこういうこと?
0572デフォルトの名無しさん
2011/09/27(火) 15:16:26.09説明が下手くそですみません。
各パターン4種類の内、必ず3種類以上なのです。
なので頂いたものだと必ず3種類以上にならないので、他のパターンが必要です。
0573デフォルトの名無しさん
2011/09/27(火) 15:18:40.10逆に言えば列記しないとダメじゃないかな。
^(.*
([A-Z].*([a-z].*[0-9@_#]|[0-9].*[a-z@_#]|[@_#].*[a-z0-9])
|[a-z].*([A-Z].*[0-9@_#]|[0-9].*[A-Z@_#]|[@_#].*[A-Z0-9])
|[0-9].*([A-Z].*[a-z@_#]|[a-z].*[A-Z@_#]|[@_#].*[A-Za-z])
|[@_#].*([A-Z].*[a-z0-9]|[a-z].*[A-Z0-9]|[0-9].*[A-Za-z])
).*)$
長いので入れた改行は無視してね。
0574デフォルトの名無しさん
2011/09/27(火) 15:20:14.730575デフォルトの名無しさん
2011/09/27(火) 16:14:59.93^((?-i)(?=.*[A-Z])((?=.*[a-z])(?=.*[0-9])|(?=.*[a-z])(?=.*[@_#])|(?=.*[0-9])(?=.*[@_#]))|(?=.*[a-z])(?=.*[0-9])(?=.*[@_#])).*$
最初の(?-i)は大文字小文字を区別
0576デフォルトの名無しさん
2011/09/27(火) 19:26:35.9624パターンをorで繋げるしかない
どう考えても効率が悪いと思うが
0577デフォルトの名無しさん
2011/09/27(火) 21:40:41.11$_='hogehoge';
if (/[A-Z]/ + /[a-z]/ + /[0-9]/ + /[\@_#]/ >= 3) { OK }
0578デフォルトの名無しさん
2011/10/03(月) 23:01:42.29先読み肯定で使った正規表現のグループのフォルダ名を置換文字列に使うことってできるんでしょうか?
なんどやってもできないんだけど、、、、、、
0579デフォルトの名無しさん
2011/10/03(月) 23:45:16.17ってなってるなら
(?=(フォルダ名))
ってやる
てか、どう書いてダメだったか書いてくれると助かるなぁ。
上記のように書いてもダメだったとか言われると寂しいし。
0580デフォルトの名無しさん
2011/10/04(火) 09:40:31.62スクリプトが手元になくてスペルミスとかしてたらややこしくなるので書きませんでした。できるのか。頑張ってみます。
ありがとうございます!
0581デフォルトの名無しさん
2011/10/04(火) 09:49:14.19書き込みしてから気づいたけど
(?=(フォルダ名)別の文字列)
としてます。これがだめなんでしょうか?
0582デフォルトの名無しさん
2011/10/04(火) 10:20:36.310583582
2011/10/04(火) 10:21:37.160584デフォルトの名無しさん
2011/10/04(火) 20:45:19.89変数に格納されてるやつをそのまま使えばいいんじゃないの?
0585デフォルトの名無しさん
2011/10/04(火) 22:12:43.34WSHのJscriptでそんなことできるん? できるなら教えてくれ。
結局WScript.argument(0).split("\\").slice(-2,-1)とかなんとかやってごまかそうかなと思っているけど。
0586デフォルトの名無しさん
2011/10/04(火) 22:28:21.34できるできないのどっちかもわかると思うし
0587デフォルトの名無しさん
2011/10/04(火) 23:05:06.46ある入力について、どれかの正規表現がマッチするならそのIDを返す!
というのを効率的にやるテクニックとかないでしょうか。
前方一致ならトライ木を使うのですが
正規表現の場合にどうするのがいいのか分からない。
言語はrubyを使っています。
0588587
2011/10/04(火) 23:23:07.32> p Regexp.new("(pattern1)|(pattern2)|(pattern3)").match("pattern2")
#<MatchData "pattern2" 1:nil 2:"pattern2" 3:nil>
()と|で結合したあと、MatchDataを1からlengthまでみてnil以外がヒットした正規表現の添え字+1か。
きっとエンジンが効率よくやってくれそうだし、解決しました。
0589587
2011/10/04(火) 23:39:38.930590デフォルトの名無しさん
2011/10/04(火) 23:48:56.340591デフォルトの名無しさん
2011/10/05(水) 04:28:39.04そういう時こそ名前付きキャプチャ
#!/usr/bin/env ruby
# -*- coding: utf-8 -*-
re_table = { :one => /(?<one>a+)/, :two => /(?<two>b+)/, :three => /(?<three>c+)/ }
re = /\A(?:#{Regexp.union(*re_table.values)})/
%w(abc bca cab).each do |s|
match = re.match s
p match
re_table.keys.each do |name|
p match[name]
end
end
outputs:
#<MatchData "a" one:"a" two:nil three:nil>
"a"
nil
nil
#<MatchData "b" one:nil two:"b" three:nil>
nil
"b"
nil
#<MatchData "c" one:nil two:nil three:"c">
nil
nil
"c"
0592デフォルトの名無しさん
2011/10/05(水) 16:34:14.940593デフォルトの名無しさん
2011/10/09(日) 09:09:28.470594デフォルトの名無しさん
2011/10/10(月) 17:03:52.30●正規表現の使用環境
Java1.6
●検索か置換か?
検索
●説明
変数文字列とその添字の取得
●対象データ
$AAA.BBB+$CCC.DDD.EEE(1234)-#FFF*#GGG.HHH(567)
●希望する結果
検索1回目
group1 : $AAA.BBB
検索2回目
group1 : $CCC.DDD.EEE
group2 : 1234
検索3回目
group1 : #FFF
検索4回目
group1 : #GGG.HHH
group2 : 567
($.*)\\(([0-9]*)\\)
これで、$CCC.DDD.EEE(1234)をみつけれるのは出来たけど、添え字が無い場合を引っ掛けるのができない。
0595デフォルトの名無しさん
2011/10/10(月) 17:13:24.510596デフォルトの名無しさん
2011/10/10(月) 17:23:36.99御幣があったかも。
($.*)\\(([0-9]*)\\) これで
$CCC.DDD.EEE(1234) この文字列から
group1 : $CCC.DDD.EEE
group2 : 1234
といのが取れるところまで出来てて
$AAA.BBB+$CCC.DDD.EEE(1234) この文字列から
1回目
group1 : $AAA.BBB
2回目
group1 : $CCC.DDD.EEE
group2 : 1234
という結果を取得する方法がわからない。
0597デフォルトの名無しさん
2011/10/10(月) 18:04:55.620598デフォルトの名無しさん
2011/10/10(月) 20:42:05.60ありがとう。でも、上手くいかなかったよ。
後、伝え方が悪かったので以下のフォーマットなのでピリオドがかならず入るというわけではないのと
3文字という縛りも無い。
$[変数名](添字)
$[変数名]
0599デフォルトの名無しさん
2011/10/10(月) 21:11:12.850600デフォルトの名無しさん
2011/10/10(月) 21:23:51.360601デフォルトの名無しさん
2011/10/10(月) 21:29:59.52正規表現の前に、日本語での意志疎通能力を身につけろ
って感じの奴が多いの?
0602デフォルトの名無しさん
2011/10/10(月) 21:31:34.19ありがとう、いけた!
0603デフォルトの名無しさん
2011/10/10(月) 21:38:24.99答えてるやつも同じような感じだからいいんじゃね?
0604599
2011/10/10(月) 22:16:37.55まったく同じくことを感じていたよ
質問者の文章に戸惑いを覚えつつ、テキトーに回答してみた
2ch内だとこのスレはまだマシな方でしょ
御幣もち食いたくなった
0605デフォルトの名無しさん
2011/10/11(火) 09:58:42.99C#
●検索か置換か?
検索(完全一致)
●説明
・擬似ワイルドカードもどきを作成したい。
・ワイルドカードには"?"のみを10回連続で使用可能、"*"は不可。
・対象データは"'(シングルクウォート)"ではじまり"'(シングルクウォート)"で終わる。
・'(シングルクウォート)内であれば、"?"は複数箇所で使用可能。
・ワイルドカード以外の文字(列)は仮で"○"として考える。
●対象データ
ex.)
'○○???'
'???○○○'
'???○○○???'
'○○???○○○'
'○○???????????○○○'
●希望する結果
'○○???' ←match
'???○○○' ←match
'???○○○???' ←match
'○○???○○○' ←match
'○○???????????○○○' ←unmatch(?が11回連続)
0606デフォルトの名無しさん
2011/10/11(火) 11:02:56.24?
0607605
2011/10/11(火) 11:44:00.71それだと
>'???○○○???' ←match
にマッチしないと思うのですが。
また、対象データはあくまで例であり、
'???○○○???○○○???○○○???○○○???○○○???○○○???・・・'
というように繰り返す可能性もあり、開始と終わりは"'(シングルクウォート)"です。
0608デフォルトの名無しさん
2011/10/11(火) 11:52:29.58マッチした物をアウトとする方が楽じゃないの?と思ってしまうのだが
0609デフォルトの名無しさん
2011/10/11(火) 12:18:36.31'[^?]*?{1,10}(?:[^?]+?{1,10})*[^?]*'
0610605
2011/10/11(火) 13:20:11.12http://regex-recipe.frozenlib.net/
ここで使える形で再度教えていただいてもよろしいでしょうか?
(?:)
この使い方がよくわからないもので。。。
0611デフォルトの名無しさん
2011/10/11(火) 14:51:39.91>>609じゃないけど
'[^?]*\?{1,10}(?:[^?]+\?{1,10})*[^?]*'
0612605
2011/10/11(火) 15:20:38.75>>611
(?:)がどうとかではなく、単に?のエスケープが必要だったんですね
ありがとうございました。
追加の要望で申し訳ないのですが、>>605、>>607の条件に加えて
・'???'等ワイルドカードのみ、'○○○'等ワイルドカード文字("?")なしはNomatchとする
とした場合はどうなりますか?
0613デフォルトの名無しさん
2011/10/11(火) 15:50:26.95追加の要望は別の用途なのか、改良なのか。
>>611だと今でも'ABC'にマッチしないけどいいの?
というかさ、正規表現一発で終わらせようとすると、正規表現自体が思惑通りの結果を
出してるかどうかのチェックに悩まされたり、思わぬバグ混入になるやもしれないよ。
''(空文字)とか'A'B'とかやその他の文字列に完全マッチ/部分マッチしないかとか、
?終わり/始まり、1文字のみはどうかとかね。
実際、あなたも回答者もチェックしきれてないでしょ。
一発で終わらせようとせず、チェック項目ごとに何段階かに分けて処理した方がいい。
>>608の提案もグッドだと思う。
(?:)は記憶(キャプチャ)しないグループ。
繰り返しの\1とか、置換の$1とかに入らない。
繰り返しや置換を使わない場合、ただの飾りです。
0615デフォルトの名無しさん
2011/10/11(火) 19:43:37.54あとで使わないことを明示することでメモリ節約および速度向上が見込めるよ。
微々たるものの場合が多いけど、クセ付けるとよいかと。
0616デフォルトの名無しさん
2011/10/12(水) 18:28:29.060617デフォルトの名無しさん
2011/10/12(水) 18:49:04.20>>593
0618デフォルトの名無しさん
2011/10/12(水) 21:18:09.590619デフォルトの名無しさん
2011/10/12(水) 21:25:55.800620デフォルトの名無しさん
2011/10/13(木) 20:45:16.60Windowsコマンドプロンプト、filestr
●検索か置換か?
検索
●説明
全角英の大文字または小文字または全角数字が含まれているか検索したい
●対象データ
以下batで失礼します
set a="Ape"
set b="Bape"
set c="222"
●希望する結果
%a%、%b%、%c%から検索して、"Ape"、"Bape"、"222"、という結果を表示できるようする正規表現または、それを含めたコマンド
●試したコマンド
echo %a%|findstr /r "[A-Z]"
echo %b%|findstr /r "a-z"
echo %c%|findstr /r \[0-9\]
echo %c%|findstr /r "\[0-9\]"
echo %a%|findstr "[A-Z]"
echo %b%|findstr "a-z"
echo %c%|findstr a-z
findstr /r [A-Z] %a%
findstr /r [a-z] %b%
findstr /r [0-9] %c%
上記のコマンドは間違っていて結果が全て空欄になっています。正しい場合は
set d=" あああ"
echo %d%|findstr /r /c:"^. ."
こちらの画面を見て頂ければと思います。それではどうかよろしくお願いします。
0621デフォルトの名無しさん
2011/10/13(木) 21:23:20.21set a="111"
set b="Ape"
echo %a%|findstr "[0123456789]"
echo %b%|findstr "[ABCEDFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz]"
0622デフォルトの名無しさん
2011/10/13(木) 22:02:28.61成功する事ができました。ありがとうございます。
"-"は始点と終点の全てを含むみたいな意味では無かったのですね。
なるほど・・・勉強になりました。
0623デフォルトの名無しさん
2011/10/13(木) 23:14:43.76始点から終点のすべてを含むであってるよ。
ただ、文字クラスがマルチバイトに対応していないんじゃないかな。
echo "a" | findstr "[B]"
このとき、 a(0x61) は [B] ([0x8161]) にマッチしてしまう。
0624デフォルトの名無しさん
2011/10/14(金) 18:20:41.89sakura editor
●検索か置換か?
検索
●説明
.jpgや.png、.zipなど特定の拡張子以外のurlを検索したい
●対象データ
http://www.hogehoge.com/aaaa.html
http://www.hogehoge.com/bbbb.jpg
http://www.hogehoge.com/cccc.png
http://www.hogehoge.com/dddd
●希望する結果
○ http://www.hogehoge.com/aaaa.html
× http://www.hogehoge.com/bbbb.jpg
× http://www.hogehoge.com/cccc.png
○ http://hogehoge.com/dddd
https?:\/\/[!-~]+ でurl全体は検索できたのですが
お尻が〜以外という条件を加えたく↑に[^(jpg|png)]とか付けてみたけど駄目でした
0625デフォルトの名無しさん
2011/10/14(金) 18:46:01.580626デフォルトの名無しさん
2011/10/14(金) 19:27:35.32http://(.(?!\.(jpg|png)))*$
0627デフォルトの名無しさん
2011/10/14(金) 19:43:19.86ありがとうございます
本当は
「今日は晴れ http://www.hogehoge.com/aaaa.html 明日は雨」
↑の様な文中のurlのような物も検索したかったのですが、
情報小出しになってしまうので、教えてもらったヒントでググってきます
感謝!
0628デフォルトの名無しさん
2011/10/14(金) 21:17:23.01つか、それって「".jpg"も".png"も含まないURL」の検索だよな。
拡張子限定にはなってない。
まぁ実際の運用上問題になることはほとんどないだろうけど。
0629624
2011/10/14(金) 22:03:23.94返す言葉もありません、申し訳ない
(?!)をうまく使えば行けるか?ということまでは分かったので
後は自力で頑張ってみます、すみませんでした
0630デフォルトの名無しさん
2011/10/14(金) 23:43:50.23http://(?>[^\s]+)(?<!\.jpg|\.png)
0631デフォルトの名無しさん
2011/10/15(土) 10:15:50.41亀レスで失礼します。
どうもありがとうございました。確かに半角であれば"[A-Z]"など使えるみたいでした。
/rと書いてましたがデフォで正規表現の状態だったのですね。
あれから安心しきっていたのですが、全角が使えなかったのは
文字クラス[]がマルチバイト文字に対応していないとのことで
ちょっと真剣に精査してみます。ちょうどマルチバイト文字が疑問でした。
(調べていた時にa(0x61) は [B] ([0x8161])といった表現を良く見た気がしたので )
原因追究までどうもありがとうございました。大きく前進できました。
0632デフォルトの名無しさん
2011/10/17(月) 20:31:29.89※1----------------------------------
<BR><BR><B>地震</B><BR><A HREF=http://headline.2c.2ch.net/eq/>臨時地震</A><br> ... 緊急自然災害</A><BR><BR><B>おすすめ</B><BR><A HREF=http:// ....
↓
地震<A HREF=http://headline.2c.2ch.net/eq/>臨時地震</A><br> ... 緊急自然災害</A>おすすめ<A HREF=http:// ....
--------------------------------------
そのため以下のように正規表現のコードを作りました。
str.replace(/<BR><BR><B>(.+)<\/B><BR>/, '$1');
実行したところ、
※2----------------------------------
地震</B><BR><A HREF=http://headline.2ch.net/bbynamazu/>地震headline</A><br><A HREF=http://toki.2ch.net/namazuplus/> ...
--------------------------------------
のようになり、メニューデータ中の先頭の"<BR><BR><B>"と末尾の"</B><BR>"を見てしまっているらしく、うまく動作しませんでした。
データを分割してその都度処理をかけようかとも思いましたが、いまいち効率が悪そうです。
どのように書けば※1のように動作させられるのでしょうか?
実装言語はJavaScriptです。
0633デフォルトの名無しさん
2011/10/17(月) 21:09:51.15最短一致
0634デフォルトの名無しさん
2011/10/17(月) 21:29:30.86ググッて解決しました。
ttp://hodade.adam.ne.jp/seiki/page.php?study4
ヒントありがとうございました。
0635デフォルトの名無しさん
2011/10/18(火) 13:47:19.74str.matches("^[a-zA-Z0-9\\(\\)]+$");
というように()を判定したいのですがエラーになってしまいます。
()はどのように指定すればよいでしょうか?
0636デフォルトの名無しさん
2011/10/18(火) 14:15:49.25str.match(/^[a-zA-Z0-9()]+$/)
0637デフォルトの名無しさん
2011/10/18(火) 16:09:06.31NoEditor
●検索か置換か?
検索
●説明
テキストに書いたURLから特定の場所の文字列を抽出したい。
●対象データ
"http://半角英数列X/a/半角数列A/半角英数列B/"
●希望する結果
半角数列A
どうかよろしくお願いします。
0638デフォルトの名無しさん
2011/10/18(火) 17:41:02.84それってJavaScriptじゃないでしょうか?
0639デフォルトの名無しさん
2011/10/18(火) 18:41:44.95[]で指定する時はエスケープいらなかったはずだけど
0640デフォルトの名無しさん
2011/10/18(火) 21:45:53.08str.matches("^[a-zA-Z0-9()]+$");
0641デフォルトの名無しさん
2011/10/18(火) 21:48:14.77それダメなんですよねー
0642デフォルトの名無しさん
2011/10/18(火) 23:00:00.57エラーが出るってのは例外でてるってことでいいの
0643デフォルトの名無しさん
2011/10/18(火) 23:34:37.200644デフォルトの名無しさん
2011/10/19(水) 05:09:14.810645デフォルトの名無しさん
2011/10/19(水) 05:56:46.55とりあえずこれはtrueになるね
"int fooABC123(void)".matches("[a-zA-Z0-9() ]+");
"\\".matches("\\\\");
0646デフォルトの名無しさん
2011/10/19(水) 09:45:17.32なかなか初心者向きのページで、これからって人にいいね。
ちょっと勉強してくる
0647デフォルトの名無しさん
2011/10/27(木) 00:36:45.31bbb
<hoge>ccc</hoge>
<hoge></hoge>に囲まれてる文字を大文字に置き換える処理をしてるのですが、
<hoge>(.*)</hoge>で一応できます。
<hoge>(.*)?</hoge>と?をつけてもできるのですが、
どっちが正しいのでしょうか?
0648647
2011/10/27(木) 00:45:02.810649デフォルトの名無しさん
2011/10/27(木) 00:54:46.79([^<]+)こうすべきだろ
0650デフォルトの名無しさん
2011/10/27(木) 02:19:10.46〜の部分を取りたいのですが
[[$test$]]$]]のように
〜の部分にも$]]を含む場合
test$]]を取りたいのですが
こういう場合はどういう記述をしたらいいのでしょうか?
0651デフォルトの名無しさん
2011/10/27(木) 02:29:26.54[[$test$]]$]]$]] のときは?
[[$test$]]$]]$]]$]]$]]$]]$]]$]]$]]$]] のときは?
0652650
2011/10/27(木) 03:02:31.73>[[$test$]]$]]$]] のときは?
test$]]$]]
>[[$test$]]$]]$]]$]]$]]$]]$]]$]]$]]$]] のときは?
test$]]$]]$]]$]]$]]$]]$]]$]]$]
です。
[[$〜$]]は文章中に1箇所だけではなくいくつかあります。
0653デフォルトの名無しさん
2011/10/27(木) 04:05:11.320654850
2011/10/27(木) 04:42:40.78最長一致がどういうことかはよくわかりませんが、
言葉の意味通りに捉えると
[[$test$]]$]]あいうえお[[$test2$]]の時
『test$]]』と、『test2』の2つに一致してほしいわけですが
『test$]]$]]あいうえお[[$test2』に一致してしまわないでしょうか?
もし違ってたらすみません。
0655デフォルトの名無しさん
2011/10/27(木) 05:20:27.990656650
2011/10/27(木) 07:41:09.65教えていただいた方法で大丈夫そうです。
0657647
2011/10/27(木) 09:23:05.93レス遅くなってすみません。
(.*)に<が入ってることも考慮したいのですが、
その場合はどうしたらいいでしょうか?
<hoge>hoge</hoge></hoge>
みたいな感じのとかです。
0658デフォルトの名無しさん
2011/10/27(木) 11:19:51.80URL変換の正規表現についてお伺いしたいです。
<rule>
<from>category/(.*)\.html</from>
<to type="forward">/servlet?action=category&type=$1</to>
</rule>
は正常に動作するんですが、パラメータが複数の場合が解りません。
<rule>
<from>category/【(.*)\】/(.*)\.html</from>
<to type="forward">/servlet?action=category&type=$1&type1=【$2】</to>
</rule>
【】内はどのように指定すればよろしいですか?
0659デフォルトの名無しさん
2011/10/27(木) 14:16:37.29<hoge>([^<]+?)</hoge>
0660デフォルトの名無しさん
2011/10/27(木) 17:41:46.66たぶん
hoge</hoge>
が取りたいって言ってる
0661デフォルトの名無しさん
2011/10/28(金) 02:07:58.52<hoge>((.(?!<hoge>))*)</hoge>
>>658
category/([^/]+)/(.+)\.html
0662デフォルトの名無しさん
2011/10/28(金) 14:47:11.91↓
aaa</hoge> をとりたいのか
わけわからんな
0663デフォルトの名無しさん
2011/10/28(金) 18:26:35.79AAA</HOGE>
?
>(.*)に<が入ってることも考慮したいのですが、
考慮とは何を意味するのか分からないし、
そもそも質問者は正規表現が知りたいとは一度も言ってないな
0664デフォルトの名無しさん
2011/10/29(土) 17:07:50.98[^d-gik-zAC-EH-Z]+ではだめなようでした
0665デフォルトの名無しさん
2011/10/29(土) 17:19:09.19ちなみに[^abc]はabc以外の任意の一文字って意味
0666デフォルトの名無しさん
2011/10/29(土) 17:27:46.91否定すべき文字が一目瞭然でいいと思う。表現も簡潔だし。
0667デフォルトの名無しさん
2011/10/29(土) 17:36:23.110669デフォルトの名無しさん
2011/10/30(日) 17:10:22.22[A-Za-z&&[^a-chjBFG]]+
0670デフォルトの名無しさん
2011/11/01(火) 09:17:55.02Category propertiesなどで、日本語の範囲内かチェックしておきたいのだけど
何処かに良い見本は無い?
0671デフォルトの名無しさん
2011/11/01(火) 12:10:35.18文字コード ライブラリでググれ
0672デフォルトの名無しさん
2011/11/02(水) 16:58:54.60PHPにて英数字、エンコードした時の文字とか有り得る文字以外はValidateチェックにて弾きたいと思うのですが、どのような正規表現が書けるものなのでしょうか?
[?&/%_-]*とかホワイトリスト的に書き加えようと思ったのですが、それ以外の有り得る文字列が分かりませんでした
・URI指示にてまず有り得ない文字が入っていたら排除したい
・NULLバイトなどセキュリティ的に問題があるものを排除したい
そもそもNULLバイトの場合は正規表現で省くのではなく、preg_match('/\0/', $uri)などで弾くのかもしれませんが
0673デフォルトの名無しさん
2011/11/02(水) 17:05:20.240674デフォルトの名無しさん
2011/11/02(水) 17:17:37.83最初、|^http(s)?://[a-z0-9-]+(.[a-z0-9-]+)*(:[0-9]+)?(/.*)?$|iとしたのですがダメで、
Zend_Uriというライブラリがあるのですが、それ使っても普通にパスを通ってしまいました
で、自分で正規表現を使って・・・と思ったのですが、実力不足で・・・
0675デフォルトの名無しさん
2011/11/02(水) 18:24:02.87現実的な方法論ではない。
http://www.din.or.jp/~ohzaki/perl.htm#httpURL
0676デフォルトの名無しさん
2011/11/02(水) 18:42:38.64排除したい、ということであって、バリデーションじゃないわけだよね。
だったら preg_match('/\0/', $uri) とかの羅列で弾いとけば?
0677デフォルトの名無しさん
2011/11/03(木) 01:28:11.970678デフォルトの名無しさん
2011/11/03(木) 02:17:36.94A{100}
AA{99}
A{99}A
(?:AAAAAAAAAA){10}
AAA・・・AAA (100個)
いろいろな書き方が出来るからその環境に合わせて最速の方法で書く。
0679デフォルトの名無しさん
2011/11/03(木) 07:25:59.87の正規表現練習ツールってどうなの?
0680デフォルトの名無しさん
2011/11/03(木) 10:06:22.47おお。すごいね。こんなにいろいろ書き方あるもんなのか。
0681デフォルトの名無しさん
2011/11/04(金) 11:13:49.35ヒットする例
0
9
10
19
99
100
999
ヒットさせない例
00
000
09
010
019
099
0100
999
0682デフォルトの名無しさん
2011/11/04(金) 11:48:14.930683デフォルトの名無しさん
2011/11/04(金) 12:08:24.080684デフォルトの名無しさん
2011/11/04(金) 12:09:57.81例えば
[0-9]|[1-9][0-9]|[1-9][0-9][0-9]
とかけますけど
もっとかっこよく書きたいんです
0685デフォルトの名無しさん
2011/11/04(金) 12:26:01.30しか思いつかないヘタレです
0686デフォルトの名無しさん
2011/11/04(金) 12:30:41.960687デフォルトの名無しさん
2011/11/04(金) 12:58:28.780688デフォルトの名無しさん
2011/11/04(金) 13:01:11.900689デフォルトの名無しさん
2011/11/04(金) 13:02:39.36それは先頭が数字以外のものに引っかかる
>>688
それは01とか03に引っかかる
0690688
2011/11/04(金) 13:03:11.060691688
2011/11/04(金) 13:08:34.85これならいけるか。
0692デフォルトの名無しさん
2011/11/04(金) 13:14:08.90(?<=[^0-9])[0-9][1-9]{0,2}(?=[^0-9])
0693デフォルトの名無しさん
2011/11/04(金) 13:15:12.170694デフォルトの名無しさん
2011/11/04(金) 13:18:39.650695デフォルトの名無しさん
2011/11/04(金) 13:20:15.03hoge123fuga
に引っかからない
0696688
2011/11/04(金) 13:27:54.830697デフォルトの名無しさん
2011/11/04(金) 13:37:01.780698デフォルトの名無しさん
2011/11/04(金) 13:44:03.821000000
にマッチする
0699デフォルトの名無しさん
2011/11/04(金) 16:07:27.44^(0|[1-9][0-9]{0,2})$
0700デフォルトの名無しさん
2011/11/04(金) 16:10:26.08(?:0|[1-9]\d{0,2})
0701デフォルトの名無しさん
2011/11/04(金) 16:17:52.54> 数字のみにヒット
を
> 数字のみの行にヒット
って読みかえるの?
0702デフォルトの名無しさん
2011/11/04(金) 16:23:59.290703デフォルトの名無しさん
2011/11/04(金) 16:33:35.020704デフォルトの名無しさん
2011/11/04(金) 16:53:35.950705デフォルトの名無しさん
2011/11/04(金) 17:22:50.690706デフォルトの名無しさん
2011/11/04(金) 17:38:33.51高学歴の方。もう一度中学校で国語の勉強をし直しなさい。
0707デフォルトの名無しさん
2011/11/04(金) 17:41:38.08って書いてあるのに0とか数字以外にヒットさせたりとかバカが多いな
0708デフォルトの名無しさん
2011/11/04(金) 17:59:06.50>>684で解決できるそうだから対象は数字のみの文字列なんだろう。
0709ぺんた ◆oNQIb2UJK.
2011/11/04(金) 18:00:44.78(?<!\d)(?:0(?!\d)|[1-9]\d*)
0710デフォルトの名無しさん
2011/11/04(金) 18:05:56.34^(?:\d|[1-9]\d{1,2})$
(?<!\d)(?:\d|[1-9]\d{1,2})
>>709
4桁の数字にHITする問題がある
0711710
2011/11/04(金) 18:06:58.76^(?:\d|[1-9]\d{1,2})$
(?<!\d)(?:\d|[1-9]\d{1,2})(?!\d)
0712デフォルトの名無しさん
2011/11/04(金) 18:12:23.00ああ、3桁しばりがあったんですか、見落としてました・・。正解は>>711で合ってると思います。
0713ぺんた ◆oNQIb2UJK.
2011/11/05(土) 00:13:57.66(?<!\d)(?:0|[1-9](?>\d{0,2}))(?!\d)
(?> ) は使わなくても誤作動はしませんが付けるのが正しい書き方だと思うので付けてあります。
0714ぺんた ◆oNQIb2UJK.
2011/11/05(土) 00:26:03.19一桁と二桁以上の数字を別処理としてマッチさせてるんですね、その発想は無かった。
0715デフォルトの名無しさん
2011/11/05(土) 14:17:18.310716デフォルトの名無しさん
2011/11/05(土) 14:28:05.76実装する立場からは >>684 が FA でいいよ、もう。
0717デフォルトの名無しさん
2011/11/05(土) 14:53:41.920718デフォルトの名無しさん
2011/11/05(土) 14:59:26.230719デフォルトの名無しさん
2011/11/05(土) 15:01:43.440720デフォルトの名無しさん
2011/11/05(土) 15:19:38.96>>681 の回答例が >>684ということで、これは
「与えられた文字列全体がパターンに一致するか真偽を判定する」
問題なのであって、
「走査して位置を求める」
問題ではないということで異議はない?
Javaでいうとこのmatchesとfindの違いか。
テンプレのジャンルには検索と置換しかないんだけど、「判定」も足そうぜー
0721デフォルトの名無しさん
2011/11/05(土) 18:14:41.37見た目が長く汚い物になることも多々あります。>>711のものは非常によく出来てると思いますよ。
0722デフォルトの名無しさん
2011/11/05(土) 18:57:08.76たとえばって書いてることを考慮できないってのはひどいもんだな
0723デフォルトの名無しさん
2011/11/05(土) 19:35:34.870724デフォルトの名無しさん
2011/11/05(土) 21:09:43.800725デフォルトの名無しさん
2011/11/05(土) 23:07:54.79オレオレ要件でよってたかってエスパー回答するのも楽しい話ではあるが。
0726デフォルトの名無しさん
2011/11/05(土) 23:20:40.680727デフォルトの名無しさん
2011/11/06(日) 00:55:33.98●正規表現の使用環境
Java(Android)
●検索か置換か?
検索
●説明
文字列から、数値を含むURLを検索し、その数値を取得したい
●対象データ
http://some_website.net/category:63
http://some_website.net/category:19
・・・
のように、数値を含むURLを含んだ文字列
●希望する結果
http://some_website.net/category:63
だったら、63を取得
0728727
2011/11/06(日) 00:57:51.72Pattern p = Pattern.compile(regex, Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE);
Matcher m = p.matcher(html);
if(m.find()) {
// 上のregexの([0-9]+)の部分を取得したい
}
よろしくお願いします。
0729727
2011/11/06(日) 01:30:21.23お騒がせしました。
0730デフォルトの名無しさん
2011/11/07(月) 21:14:56.26PHP5.3.8にてDOMDocumentにてHTMLファイルを取得し、<body>内のテキストだけを抽出したいです。
タグ部は正規表現で除去出来ますが、問題になるのは<script>でJavaScriptの中身が表示される、<!--などのコメントが表示される事です。
で、<script>とコメントを含む部分を先に除去したいと思います。
/<script[^>]*?>.*?</script>/si
とかやってみたのですが良く分かりません。
アドバイスまたは似たような事を書かれているサイトなどを教えて頂けないでしょうか?
0731デフォルトの名無しさん
2011/11/07(月) 21:39:07.16PHPスレいっておいで
正規表現使わずにできるから
0732デフォルトの名無しさん
2011/11/07(月) 21:48:28.52マジですか?
では行ってきます
0733デフォルトの名無しさん
2011/11/07(月) 21:50:21.62マジですか?
では行ってきます
0734670
2011/11/08(火) 10:18:31.06(?:\p{Inherited}|\p{Me}|\p{Mn})?)+/x;
0735デフォルトの名無しさん
2011/11/08(火) 22:56:34.230736デフォルトの名無しさん
2011/11/09(水) 01:50:21.80(д`* )
(⊃⌒*⌒⊂)
/__ノωヽ__)
0737デフォルトの名無しさん
2011/11/10(木) 14:52:38.32"/"だとURIなどでエスケープしなくちゃいけなくなり、見にくくなりますが
"!"とか"@"とか使う可能性が少ないものがいいと思うのですが、どんな文字がいいのでしょうか
皆さんの使っている文字を教えて頂けないでしょうか?
0738デフォルトの名無しさん
2011/11/10(木) 14:57:57.97その時の状況(エスケープの手間や可読性等々)で使い分けてるから、
「この文字がいい」という提案は不可能。
0739デフォルトの名無しさん
2011/11/10(木) 15:13:18.110740デフォルトの名無しさん
2011/11/10(木) 21:07:08.63でも使う文字ってそんなに種類ないでしょ?
0741デフォルトの名無しさん
2011/11/10(木) 21:41:16.77まあ「記号類のどれか」であることは確かだわな。
0742デフォルトの名無しさん
2011/11/10(木) 23:07:36.020743デフォルトの名無しさん
2011/11/10(木) 23:13:25.720744デフォルトの名無しさん
2011/11/11(金) 01:42:09.31ファイル、グループ、レコード、ユニット
の順で「セパレータ」と定義しているぞ。
0745デフォルトの名無しさん
2011/11/11(金) 05:47:32.27で?
0746デフォルトの名無しさん
2011/11/11(金) 06:23:00.520747デフォルトの名無しさん
2011/11/11(金) 07:19:41.84そのセパレータは意味が全然違う。
0748デフォルトの名無しさん
2011/11/11(金) 08:09:54.63記号でやるのは古い
例えば「男爵伯爵」とか
0749デフォルトの名無しさん
2011/11/11(金) 08:14:24.50Googleでは引っ掛からなかった。 「男爵伯爵」
0750デフォルトの名無しさん
2011/11/11(金) 08:17:57.30引っ掛からないのは使えるって事だしね
googleで検索するのはいいね
0751デフォルトの名無しさん
2011/11/11(金) 13:45:27.170752デフォルトの名無しさん
2011/11/12(土) 00:51:55.12^((?<!abc).)*$
これね。
0753デフォルトの名無しさん
2011/11/12(土) 01:59:33.600754デフォルトの名無しさん
2011/11/12(土) 03:35:55.510755デフォルトの名無しさん
2011/11/12(土) 11:36:58.38テキストエディタでgrepのまねごとするために使う
これで消せばパターンの行だけ残る、という奴
>>754
ほんとや・・・
なんてこった
0756デフォルトの名無しさん
2011/11/12(土) 11:41:18.03http://funcchan.blog16.fc2.com/blog-entry-19.html#strdeny
0757デフォルトの名無しさん
2011/11/13(日) 00:45:47.17エディタによっては否定ができて楽なんだけどね
0758デフォルトの名無しさん
2011/11/13(日) 04:36:21.070759デフォルトの名無しさん
2011/11/13(日) 16:39:59.890760デフォルトの名無しさん
2011/11/13(日) 19:27:02.75.NETじゃなくてVSのIDEに実装されている方ね
0761デフォルトの名無しさん
2011/11/14(月) 10:05:18.600762デフォルトの名無しさん
2011/11/14(月) 10:53:23.77MySQL4.1のREGEXP
●検索か置換か?
検索
●説明
カラム内に <> を含むテキストデータがあるのですが
調べたい数字が入っているかを調べたい
●対象データ
3<>4
5<>32<>2
5<>3<>6
3
4
この中から3を含むものを検索したい(32はヒットしないように)
●希望する結果
3<>4
5<>3<>6
3
0763デフォルトの名無しさん
2011/11/14(月) 11:33:41.51行検索なのかな?
0764デフォルトの名無しさん
2011/11/14(月) 12:10:16.52^([0-9]+<>)*3(<>[0-9]+)*$
0765デフォルトの名無しさん
2011/11/14(月) 12:27:40.68ありがとうございます! ばっちりでした。
>>763
1行が1レコードのつもりで書いてました。
結果はヒットするレコードってことで
0766デフォルトの名無しさん
2011/11/14(月) 20:42:20.38行頭に特定の文字(★や◆など。文字列じゃないです)が入ってる場合は行末まで無視して
それ以外は行末まで強調させる、という条件はどんな風になるでしょうか?
★や◆の場合のみ一行全てを表示させるものは作っているのですが、否定文になるとなんか難しい……
ソフトはテキストエディタの秀丸です。
最初は順番変えたら何とかなりそうだと思ったんですが、どうも少々凝った否定文が必要なようで
ここで質問させていただきます
0767デフォルトの名無しさん
2011/11/14(月) 20:44:02.00[◆|★]+([亜-�K]+|[一-龠]+|[ぁ-ん]+|[ァ-ヴー]+|[a-za-z0-9]+|[\d0-9]+|[\d!”#$%&’()*+−¥、。…・※?〜:「」々人])+[$]
0768デフォルトの名無しさん
2011/11/14(月) 20:50:56.29要件を見ると行頭の特定文字以外には言及してないよね
0769デフォルトの名無しさん
2011/11/14(月) 21:38:10.050770デフォルトの名無しさん
2011/11/14(月) 22:43:13.78何かキモい書き方だな。\pが使えるなら\p{Han}+としたいところだが。
行頭云々言ってる割に正規表現が ^ で始まってないとか、末尾の [$] は $ の間違いかとか、
()の中の文字クラス全部まとめてしまっていいんじゃないかとか、つっこみどころがいろいろ。
で、行頭が★と◆以外の1行なら、
^[^★◆].*$
でどうだ。
0771766
2011/11/15(火) 00:49:22.72厳密には解決はしてないのですが
色々と試してたら「 ^(★|◆).*$ 」で問題なさそうだったので、もう止めときます
否定で一行除くの難しすぎる……
秀丸スレでも似た醜態を晒してしまい、申し訳ありません
ゴチャゴチャしてたのは全ての文字に
とにかく符合させようとしてパターンをありったけ突っ込んだ結果です
0772デフォルトの名無しさん
2011/11/15(火) 02:22:35.770773デフォルトの名無しさん
2011/11/15(火) 06:46:26.04http://example.com/%E3%81%82
↑これをhttp://example.com/index.php?word=%E3%81%82にリダイレクトしてたのですが
この度、http://example.com/%E3%81%82?lang=en にアクセスされた場合
http://example.com/index.php?word=%E3%81%82&lang=en にリダイレクトしたいのですが
うまく行きません。
RewriteRule ^(.*)(\?(.*))?$ /index.php?word=$1&$3
どのようにしたらいいでしょうか
0774デフォルトの名無しさん
2011/11/15(火) 13:15:31.02でいいんじゃないかなぁ
0775デフォルトの名無しさん
2011/11/15(火) 14:15:58.95他のソフトで置換した方が早くね?
/^(!?(★|◆)(.*$)/<b>\1<\/b>/g
0776デフォルトの名無しさん
2011/11/15(火) 14:34:17.89スレ違いだけど、ちょっとコメント。
mod_rewiteは正規表現だけのルールでは望む結果を得られないので、
マニュアルをちゃんと読むべし。 末尾のオプションの使い方が鍵。
0777デフォルトの名無しさん
2011/11/15(火) 16:04:21.31aa1
っていう文字列の塊を1セットで[a-z]{2}[0-9]と表します
この文字列が
fi1cs2bc3wr4
ってう風に4回繰り返されている場合にヒットさせる正規表現はどうかくのでしょうか?
([a-z]{2}[0-9]){4}って感じで書いてみたんですけど(〜){数字}のケースって見たことないんですがどうでしょうか
0778デフォルトの名無しさん
2011/11/15(火) 16:43:31.93何が減るわけじゃなし。2ちゃんに書き込む労力は払うのに。
煽り抜きで、本当にいつも不思議に思う。
0779デフォルトの名無しさん
2011/11/15(火) 18:28:37.230780デフォルトの名無しさん
2011/11/15(火) 22:30:45.65ありがとうこざいました!
0781デフォルトの名無しさん
2011/11/15(火) 23:31:37.610782デフォルトの名無しさん
2011/11/16(水) 06:02:22.65誰もが思うことを実際に口に出してツッコミ入れると損するよ。ツッコミ癖は直しておいたほうがいい。
ツッコミキャラほどうざいキャラはないからな。
まぁこのレスもツッコミレスなわけだがw
0783デフォルトの名無しさん
2011/11/16(水) 11:05:53.76自治キャラのウザさは、遙かその上を行く。
いくら草を生やしても中和されない。
0784デフォルトの名無しさん
2011/11/16(水) 11:52:45.410785デフォルトの名無しさん
2011/11/16(水) 13:58:16.17文字ストリング「"山田","太郎",,"",,"自宅TEL","03-4567-8901"」から、
「"山田"」、「"太郎"」、「""」、「"自宅TEL"」、「"03-4567-8901"を取り出したいのですが、
対象を「.+?」で指定すると、
「"山田"」、「"太郎"」、「"",,"」、「","」が取り出されます。
どのような指定にすれば良いのでしょうか
0786785
2011/11/16(水) 14:01:28.580787デフォルトの名無しさん
2011/11/16(水) 14:04:34.810789785
2011/11/16(水) 16:16:51.38レスありがとうございます。
0790デフォルトの名無しさん
2011/11/16(水) 20:58:38.080791デフォルトの名無しさん
2011/11/16(水) 21:04:31.230792デフォルトの名無しさん
2011/11/16(水) 22:46:28.660793デフォルトの名無しさん
2011/11/17(木) 23:54:12.68どうでしょうね
動くのを正としたいのか、もっとスマートにしたいのか
[0-9]は�dにできるし、正規表現に正解はないよ
0794デフォルトの名無しさん
2011/11/19(土) 01:10:32.91()の指定とか複数あったからどこかしら書き間違ってたのかもしれんけど・・・
0795デフォルトの名無しさん
2011/11/19(土) 02:00:57.430796デフォルトの名無しさん
2011/11/19(土) 09:24:33.46まれに \d に対応しない実装もある
JavaScript は明らかに対応してるけどね
0797デフォルトの名無しさん
2011/11/19(土) 11:12:45.900798デフォルトの名無しさん
2011/11/19(土) 11:19:34.330799デフォルトの名無しさん
2011/11/19(土) 13:01:15.58秀丸
●検索か置換か?
置換
●説明
文字列の中に同じ文字が2つ以上含まれる行を削除したい
●対象データ
aaaaaaaa
abcabcab
abcdefgh
agbchddf
cbfdaehg
dbcahebg
dffbdeha
echfbgad
fbadcaeh
habcdefg
●希望する結果
abcdefgh
cbfdaehg
echfbgad
habcdefg
見づらいかと思いますが
どうかよろしくお願いします。
0800デフォルトの名無しさん
2011/11/19(土) 13:37:21.04それは正規表現でやる仕事か?
0801デフォルトの名無しさん
2011/11/19(土) 14:07:10.47一応対象データであがってる文字列ではうまくいった
0802デフォルトの名無しさん
2011/11/19(土) 14:07:14.42検索: (^|\n).*?(.).*\2.*\n
置換: \1
0803デフォルトの名無しさん
2011/11/19(土) 14:37:01.04助かりました!
バッチリな感じで動作中です
スッキリできました、本当にありがとうございました。
0804デフォルトの名無しさん
2011/11/19(土) 16:27:42.330805デフォルトの名無しさん
2011/11/21(月) 06:55:43.01このスレ勉強になるなw
0806デフォルトの名無しさん
2011/11/21(月) 15:26:15.700807デフォルトの名無しさん
2011/11/27(日) 22:17:36.13start.*end
これだと、startから最後のendまで取得してしまう
start.*?end
これだとstartの直近のendまで取得できる
.*の後ろに?を付けると直近のendまでになる理由が理解できません
死んだほうがいいでしょうか(´・ω・`)
0808デフォルトの名無しさん
2011/11/27(日) 23:16:54.36手前にもうendが見付からない場合には最後に見付けたendまでマッチすることが確定します。
0809デフォルトの名無しさん
2011/11/27(日) 23:54:06.93正規表現は原則よくばりなマッチ(とれるだけとる)をするんだけど、この原則をひっくり返したものが、.*?
0810デフォルトの名無しさん
2011/11/28(月) 07:30:19.02「0個か1個」を意味するメタキャラクタの"?"で、どういう理屈で最短一致になるのか?
という疑問かもしれん。
(量指定子)?
という表現ひとまとまりで、最短一致を表す正規表現となる。そういう約束。
この場合の"?"は「0個か1個」を意味するメタキャラクタとは別物。
行頭を表す"^"と、文字クラス内で否定を意味する"^"とが別物であるようなもの。
0811デフォルトの名無しさん
2011/11/28(月) 13:31:24.66>>809
>>810
説明不足なのにエスパーしてくれた>>810さんの通りでした
メタキャラクタの"?"とは切り離して考えないといけないんですね。
ありがとうございました!
0812デフォルトの名無しさん
2011/11/29(火) 22:16:38.47そこで、
>>9
↑
みたいにレスに返事をする部分を
レス9へ返事
と変換したいのですが変換対象と変換結果をどのように指定すればよいでしょうか
0813デフォルトの名無しさん
2011/11/29(火) 22:26:54.43安価以外の「『>』×1〜2+数字」にも絶対反応するけどそれはどうするの?
0814デフォルトの名無しさん
2011/11/29(火) 23:39:45.17aaaaと1、bbbb2_と2を抽出したい
どう書いたらいい?
0815デフォルトの名無しさん
2011/11/30(水) 00:24:08.720816デフォルトの名無しさん
2011/11/30(水) 00:42:50.28((^[a-zA-Z_\\-]+)|(^[a-zA-Z_\\-]+[\\-_]))(\\d+)\\.txt$
です
0817デフォルトの名無しさん
2011/11/30(水) 00:48:44.550818815
2011/11/30(水) 01:10:35.02^(.*?)(\\d+)\\.txt$
で$1と$2に入る。これは検索対象がファイル名であることを前提にしてる書き方だけどね。
これじゃだめなら何が足りないのか書いてね。
0819デフォルトの名無しさん
2011/11/30(水) 01:50:36.80アンカーにはさまざまなパターンが存在し、>>813氏も心配しているような誤反応の可能性がありますが、
シンプル版でよければ。
===
変換対象
(?<=\n)>>([1-9]\d{0,3})(?=[ ])
変換結果
レス$1へ返事
===
アンカーが行頭に存在し、かつ、
アンカーの後ろにスペースが入っている(SoftalkWEBの仕様)場合に置換します。
以下のように、番号を複数指定している場合などには未だ対応できていません。
>>1,2
>>1-2
また、>>1みたいな全角文字にも対応していません。
他のSoftalkWEBユーザの参考になるし、機能追加の要望にもなるので、
SoftTalkのサポート掲示板の方に投稿したほうが良いと思いますが、、、
0820デフォルトの名無しさん
2011/11/30(水) 02:39:22.37http://www42.tok2.com/home/proxo/rep/src/rs0033.rep
0821デフォルトの名無しさん
2011/11/30(水) 12:52:36.20ではなくて、
「aの4回または8回の繰り返し」
を ^(a{4}|a{8})$ のように「a」を2回使用せずに、「a」を1回だけ使用して指定する方法を教えてください。
0822デフォルトの名無しさん
2011/11/30(水) 13:04:10.090824デフォルトの名無しさん
2011/11/30(水) 16:21:29.660825デフォルトの名無しさん
2011/11/30(水) 16:58:17.470826デフォルトの名無しさん
2011/11/30(水) 20:26:15.49性器の生気を正規表現でどうしましょうか?
0827デフォルトの名無しさん
2011/11/30(水) 23:04:22.590828デフォルトの名無しさん
2011/12/01(木) 09:28:19.54preg_matchです。
電話番号の認証として、
/^\d[\d\-]+\d$/D
を使用していますが、
「1--3」のようなハイフン記号が続く場合の入力を許可してしまっています。
要件として、厳密な電話番号ルールは必要ではありません。
データとして「1-2-3」などを許可しています。
よろしくお願いいたします。
0829デフォルトの名無しさん
2011/12/01(木) 10:43:50.070830デフォルトの名無しさん
2011/12/01(木) 12:25:11.030831デフォルトの名無しさん
2011/12/01(木) 13:00:55.38素直に書けばそういう感じですね。
目からウロコです。
0832デフォルトの名無しさん
2011/12/01(木) 13:22:51.620833デフォルトの名無しさん
2011/12/01(木) 13:29:59.33こちらを使用します。
ありがとうございます。
0834デフォルトの名無しさん
2011/12/01(木) 14:36:15.330836デフォルトの名無しさん
2011/12/01(木) 21:01:27.69こういうのが一番はやい。/(a-z)/より早い。でもめんどくさい。
0837デフォルトの名無しさん
2011/12/03(土) 20:22:32.94ケ ー ス を 正 規 表 現 で や る と ど う す れ ば い い の か な
0838デフォルトの名無しさん
2011/12/03(土) 20:28:51.44([^ ] )+
0839デフォルトの名無しさん
2011/12/03(土) 20:34:55.370840デフォルトの名無しさん
2011/12/03(土) 23:12:53.30http://hibari.2ch.net/test/read.cgi/tech/1322908056/l50
0841デフォルトの名無しさん
2011/12/05(月) 16:10:59.60C#
●検索か置換か?
検索して、マッチしたものをキャプチャして置換したい。
●説明
文字列の演算式の項をキャプチャして置換したい。
演算子には、+,*,()のみが使用可能。括弧の入れ子も可能。
●対象データ(ex.)
(aaa+bbb)*(ccc+ddd)
があったとき、まず、aaa,bbb,ccc,dddをキャプチャして、
文字列変換(別途用意済)をする。
次に、それぞれ変換した文字列を元の式に戻す。
例えば、文字列変換が小文字⇒大文字への変換だった場合、
(AAA+BBB)*(CCC+DDD)
としてたい。
実際には、
string strBefore = "aaa";
string strAfter = 変換メソッド(strBefore);
という感じで、独自の変換メソッドを用意しています。
aaa*(bbb+ccc) ⇒ AAA*(BBB+CCC)
aaa*((bbb+ccc)+ddd) ⇒ AAA*((BBB+CCC)+DDD)
0842デフォルトの名無しさん
2011/12/05(月) 16:45:57.870843デフォルトの名無しさん
2011/12/05(月) 17:15:20.400844841
2011/12/05(月) 17:27:54.69struprはあくまで例です。
ここで複雑な変換処理の式を出しても混乱するだけだと思ったのでupperを出しただけです。
>実際には、
>string strBefore = "aaa";
>string strAfter = 変換メソッド(strBefore);
>という感じで、独自の変換メソッドを用意しています。
ここで事情は説明したつもりなのですが・・・
0845デフォルトの名無しさん
2011/12/05(月) 17:42:16.920846デフォルトの名無しさん
2011/12/05(月) 17:46:12.47正規表現のサンプルコードか何かのような気がするのだが・・。
0847841
2011/12/05(月) 18:16:25.27すみません、たしかにロジックの説明は余計だった気がします。
教えて頂きたい正規表現は、四則演算「っぽい」文字列にマッチするかどうかというものです。
マッチさえすれば、あとはキャプチャして置き換えればよいとの認識です。
宜しくお願い致します。
0848デフォルトの名無しさん
2011/12/05(月) 18:31:39.000849デフォルトの名無しさん
2011/12/05(月) 22:23:58.80文字列の中に式らしき部分があって、その要素(項)を別に定義した約束事で
置換するというのでいいのかな。
0850デフォルトの名無しさん
2011/12/05(月) 22:50:20.98正規表現でやったほうが楽だけどね、処理速度は遅いけど。
・項にはどんな文字が使われるのか、英字だけなのか、ひらがなや漢字、数字なども含まれるのか 例、時間*時給
(これがはっきりしないと書きようが無い)
・式の前後には改行は入っているのかいないのか
・全角文字には対応するのかしないのか 例、F+G
これらが分かれば簡単に書けるから誰かしらが作ってくれると思うよ。
0851デフォルトの名無しさん
2011/12/05(月) 22:54:13.82簡単に対応出来る。鬼車でない場合は文字列操作関数で頑張ったほうが正確に判定出来ていいかも。
0852デフォルトの名無しさん
2011/12/05(月) 23:07:39.25括弧が正確に対応するかは個別にCheck。正規表現使わなくていい。
0853デフォルトの名無しさん
2011/12/05(月) 23:07:41.69括弧の入れ子とか別に関係ないじゃん?
0854デフォルトの名無しさん
2011/12/05(月) 23:23:12.62((((aaa+bbb)*ccc(ddd)
こういう括弧の数が合わないものは式でない可能性が高い。それを置換してしまってもいいのかな?
0855デフォルトの名無しさん
2011/12/05(月) 23:35:58.54それを考慮するってことは、式の始まりまたは終わりを判断するつもりがあるということか。
0856デフォルトの名無しさん
2011/12/05(月) 23:44:00.410857デフォルトの名無しさん
2011/12/06(火) 02:48:57.240858デフォルトの名無しさん
2011/12/06(火) 06:28:53.190859841
2011/12/06(火) 08:54:43.49ご指摘ありがとうございます。
項はある検索エンジンで使用する独自の式が入ります。
"TERM"という定数に項を表す正規表現が記述されている、として頂ければと思います。
const string TERM = "●●"//●●←項を表す正規表現
式の前後に改行は入りません。
全角文字は、項の中ではありますが、+、*、(、)は半角のみを許可します。
よろしくおねがいします。
0860デフォルトの名無しさん
2011/12/06(火) 09:23:04.74数字の入っているファイル名を置換したいです。
あああいいい01.txt
AABB0002.txt
なむなむ003.txt
TYTY4.txt
↓
THX001.txt
THX002.txt
THX003.txt
THX004.txt
.+(\d)(\d?)(\d?)(\d?)\.txt
などと、いろいろ試してはみたんですがうまくいきません。
どうかお力添えのほどをよろしくお願いします
0861デフォルトの名無しさん
2011/12/06(火) 11:33:14.28.+(\d)+\.txt
こういうこと?
0862デフォルトの名無しさん
2011/12/06(火) 11:43:15.81鬼車つかって簡単に対応したのを書いてもらえますか
0863860
2011/12/06(火) 17:48:58.84レスありがとうございます。
条件をもう少しちゃんと書けばよかったですね
数字部分が0255などの時うまく置換できないのです。
数字部分だけで言うと、001,002,・・,255,・・880
のような形で置換したいです。
置換の方への記述の仕方もよくわからず、できればそちらもお願いいたします
0864デフォルトの名無しさん
2011/12/06(火) 18:02:07.72>>4
0865860
2011/12/06(火) 18:28:08.59●正規表現の使用環境
psstpsstというリネームソフト(Perl互換)
●検索か置換か?
置換
●説明
最大4桁で書かれた数字部分を3桁に統一したい
●対象データ
ABCA01.txt
BCAA2.txt
CABA0255.txt
●希望する結果
AAA001.txt
AAA002.txt
AAA255.txt
どうぞよろしくおねがいします
0866デフォルトの名無しさん
2011/12/06(火) 20:38:24.42(\d+\.)
000\1
下3桁だけ切り出し
\d*(\d{3}\..*)
\1
0867デフォルトの名無しさん
2011/12/06(火) 22:41:35.61そんなのあるのか。
0868デフォルトの名無しさん
2011/12/06(火) 22:48:48.50http://swatmac.info/?p=716
正規表現の限界 @ Shibuya.pm
http://swatmac.info/etc/shibuya_pm/pix/recursive-regex.png
http://swatmac.info/etc/shibuya_pm/
0869デフォルトの名無しさん
2011/12/06(火) 23:22:37.090870デフォルトの名無しさん
2011/12/06(火) 23:35:32.29再帰的パターン
どうすればカッコに括られた文字列とマッチできるか、という問題を 考えて見ましょう。
このとき、カッコは何回でもネストできるとします。
再帰が使えないとすると、パターンを用いて、せいぜい、ある一定の深さの ネストまでしかマッチできないでしょう。
任意の深さのネストを 処理することは不可能です。
Perl 5.6 では、正規表現において再帰を行う 実験的な機能が導入されています。
PCRE では、再帰という特殊なケースに対して専用のシーケンス (?R) が導入されました。
http://php.net/manual/ja/regexp.reference.recursive.php
0871デフォルトの名無しさん
2011/12/06(火) 23:46:03.390872デフォルトの名無しさん
2011/12/06(火) 23:58:07.190873デフォルトの名無しさん
2011/12/07(水) 00:00:50.430874デフォルトの名無しさん
2011/12/07(水) 00:03:36.96「たとえばほげほげ+fooという文字列」
↑この中の項をどうやって判別するの。
0875デフォルトの名無しさん
2011/12/07(水) 00:07:35.69どの文字を許可するかはそのつど変わる。
0876デフォルトの名無しさん
2011/12/07(水) 00:12:27.180877デフォルトの名無しさん
2011/12/07(水) 00:18:13.56文字コードの問題があるけど、たとえばUTF32などだったら英数も全角も同じバイト長で区別はない。
0878デフォルトの名無しさん
2011/12/07(水) 00:23:06.12>>855でも書いたけど、式の始まりと終わり、項と項以外をどうやって判断するの?
体重+年齢と性別*5
このとき、何が項として抽出されるべきかを書いてみ?
べつに>>874でもいいけど。
0879デフォルトの名無しさん
2011/12/07(水) 00:25:53.18たとえば[0-9a-z]としてあとで変更することもできる。
全角になったとしてもたいした問題でない。
0880デフォルトの名無しさん
2011/12/07(水) 00:26:54.45こうわけるのが普通だろ。他にどう分けるんだよ。
体重 + 年齢と性別 * 5
0881デフォルトの名無しさん
2011/12/07(水) 00:29:23.510882デフォルトの名無しさん
2011/12/07(水) 00:31:54.360883デフォルトの名無しさん
2011/12/07(水) 01:05:10.14いつまで雑魚の相手をするつもりなんだ?
0884デフォルトの名無しさん
2011/12/07(水) 01:12:28.09正規表現はマッチするだけ。置換処理はプログラミングの分野。はき違えてはいけない。
http://ideone.com/2xlKW
0885デフォルトの名無しさん
2011/12/07(水) 01:24:06.45>>850で「はっきりしないと書きようがない」と言われてるのにはっきりさせないから混乱するんだ。
0886デフォルトの名無しさん
2011/12/07(水) 01:53:13.540887デフォルトの名無しさん
2011/12/07(水) 04:54:20.90そんな手間かけてゴミレス付けんなよ。
0888860
2011/12/07(水) 10:11:04.84実はその発想はあったのですが、下3桁の切り出し方が分かっておりませんでした。
どうもありがとうございました。
また、もし一工程で済ます方法があったとしたら
後学のために教えていただけると幸いです
0889デフォルトの名無しさん
2011/12/07(水) 13:40:04.24参考に...
このスレの範疇を超えちゃってアレだけど、
Flexible Renamerっていうリネームソフトなら正規表現+スクリプトを使って一発でできるみたい
検索:.+?(\d+)(\.[^\.]+)$
置換:"AAA"+right("00\1",3)+"\2"
(高度なリネーム、正規表現、スクリプトにチェック)
0890デフォルトの名無しさん
2011/12/07(水) 15:53:09.380891860
2011/12/07(水) 16:20:58.95FlexibleRenamerはちょっと重いので敬遠していたのですが
スクリプトとの合わせ技が使えるんですね
自分には少しハードルが高いですけど
rightってことは・・・左からはleftとか使えるんだろうな〜と想像したり
"right(00\1,3)"ではないのがいまひとつ分からなかったりしますが
大変勉強になりました。ありがとうございます
0892デフォルトの名無しさん
2011/12/07(水) 16:29:14.42それと拡張子なしのファイルには対応出来ないけどこれは考えなくても良いのかな。
0893デフォルトの名無しさん
2011/12/07(水) 16:31:05.75練馬ってのもいろいろできるけど、こっちはややこしいイメージを受けると思う。
0894デフォルトの名無しさん
2011/12/07(水) 16:32:29.05ただ、雰囲気的に、4桁の場合は先頭が0であるという暗黙の条件があるんだろうと思ってる。
拡張子も然り。
0895デフォルトの名無しさん
2011/12/07(水) 16:35:20.55実用的に問題無いならいいんだけどね。
0896デフォルトの名無しさん
2011/12/07(水) 16:42:08.490897デフォルトの名無しさん
2011/12/08(木) 00:57:46.56こう仮定して再帰を使った正規表現作ってくれる人ってこのスレにいるの?いない気がする。
0898デフォルトの名無しさん
2011/12/08(木) 00:58:40.070899デフォルトの名無しさん
2011/12/08(木) 01:07:07.26「正規表現で何をしたいのかと細かい条件」
これを質問者がしっかり文章化して投下してくれないと始まらないね
0900デフォルトの名無しさん
2011/12/08(木) 02:48:45.53それがあいまいな状態で「エンジンが鬼車なら再帰でできる」なんていうのがいるから困るんよ
0901デフォルトの名無しさん
2011/12/08(木) 03:43:54.440902デフォルトの名無しさん
2011/12/08(木) 05:08:31.560903デフォルトの名無しさん
2011/12/08(木) 05:16:39.140904デフォルトの名無しさん
2011/12/08(木) 05:26:48.850905デフォルトの名無しさん
2011/12/08(木) 05:43:03.370906860
2011/12/08(木) 06:52:42.57みなさんありがとうございます
>>894さんの仰る通り4桁とはいっても先頭は0です。
全部で800くらいのものを10人ばかりで分担作業したので、人それぞれでファイル名が・・・となりまして
今回のを参考に、複雑な処理はFlexibleRenamerも使ってみようと思います。
まだ消化しきれてない部分もあるので、少しずつですが勉強していきます。
どうもありがとうございました
0907841
2011/12/08(木) 08:42:06.05>>878
たとえばほげほげ+fooという文字列 ⇒項は「たとえばほげほげ」と「fooという文字列」
体重+年齢と性別*5 ⇒ 項は「体重」と「年齢と性別」と「5」
です。
>>899
正規表現でやりたいことは、
・'+','*','(',')'の4つの演算子と、C_TERMで定義された項を使った式がマッチするかどうかを判断したい。
・スレ内で議論されている、()の対応も処理したい。※(1+1))*2は当然アンマッチ
・四則演算といっていますが、項は数字ではなく、ただの文字列なので、取り出せればOKです。
・で、(?<TERM>C_TERM)を使って、マッチした項を取り出し、Match.replace()で
項を変換して置き換える。(この辺はC#の処理系の話ですが。)
また、C_TERMで使える文字使えない文字は別途チェックをします。
当然、+、*、(、)は項の文字としては使えません。
0908デフォルトの名無しさん
2011/12/08(木) 11:26:21.12項を取り出すだけなら [^+-()]+ で十分でしょう
演算子の処理も含めるなら演算子にもマッチさせる必要があるでしょうね [^+-()]+│[\s\S]
処理をどうするかは正規表現の範疇ではありません
0909841
2011/12/08(木) 11:34:25.87例えば、
(C_TERM+C_TERM)*C_TERM+C_TERM*C_TERM
という式にマッチするかどうか?
という正規表現が知りたいのです。
この時に括弧の入れ子も精査してほしいのです。
0910デフォルトの名無しさん
2011/12/08(木) 12:16:31.20ですから先程の正規表現でマッチできるのではないですか?
括弧の対応関係は ( の数をカウントする事で実現できます
先頭から順番にマッチして ) の数と一致するか確かめてください
正規表現そのものは決して難しくありません
0911デフォルトの名無しさん
2011/12/08(木) 12:19:11.08漠然と式にマッチするといわれても正規表現を書きようがないのですが
括弧の対応関係は ( の数をカウントする事で実現できます
先頭から順番にマッチして ) の数と一致するか確かめてください
いずれも括弧にマッチさせた後の処理の問題です
正規表現そのものは決して難しくありません
0912911
2011/12/08(木) 12:20:51.94>910は流してください
0913デフォルトの名無しさん
2011/12/08(木) 12:42:25.68パターンの整合性チェック(括弧の対応がとかそういうの)をしたあとで
マッチするかどうかを調べればいいと思う
擬似コードだけど、こんなん。
pattern = "(C_TERM+C_TERM)*C_TERM+C_TERM*C_TERM";
if (isValid(pattern)) {
isMatch(pattern, str);
}
0914デフォルトの名無しさん
2011/12/08(木) 12:51:33.71>>909
http://stackoverflow.com/questions/5454322/python-how-to-match-nested-parentheses-with-regex
http://stackoverflow.com/questions/5475804/regular-expression-for-math-operations-with-parentheses
0915デフォルトの名無しさん
2011/12/08(木) 13:21:19.860916デフォルトの名無しさん
2011/12/08(木) 14:04:17.14数字と文字が混在する文字列の中から、数字だけを取り出すことは可能でしょうか?
(ただし、複数個の数字文字列としてではなく、一つの文字列として取り出す場合)
例えば
「a12b3cd456efg」から「123456」を取り出す
(「12」と「3」と「456」ではなく)
0918916
2011/12/08(木) 14:53:52.92レスありがとうございます。
0919デフォルトの名無しさん
2011/12/08(木) 15:02:31.52perlだったら
$str =~ s/[^0-9]/g;
で変換しちゃうとか。
0920デフォルトの名無しさん
2011/12/08(木) 15:04:18.550921デフォルトの名無しさん
2011/12/08(木) 15:04:53.10>>916
perlだったら
$str =~ s/[^0-9]//g;
0922デフォルトの名無しさん
2011/12/08(木) 19:10:16.21(?:([^+*()]+)|\((?R)\))(?:[+*](?R))?
C#は知らないけれど、こんな感じ?
ただ、((aaa+bbb)には(aaa+bbb)でマッチするけどねー。
適当に再帰下降パーザを書いた方が確実だと思われ。
0923デフォルトの名無しさん
2011/12/08(木) 21:13:25.02んだね。
>>922
(?<!)と(?!)で正規表現の前後の判定をするといいよ。
0924デフォルトの名無しさん
2011/12/08(木) 21:19:24.01だよね
0926デフォルトの名無しさん
2011/12/08(木) 22:25:08.13C#では再帰は使えなさそうだな。
http://msdn.microsoft.com/ja-jp/library/az24scfc.aspx
というか、再帰が使える言語・ライブラリ自体がまだあまりないような。有名どころだと
言語: Perl 5.10以降、Ruby 1.9以降
ライブラリ: 鬼車、PCRE、Boost.Regex
ぐらいか?
0927デフォルトの名無しさん
2011/12/09(金) 04:22:21.570928デフォルトの名無しさん
2011/12/09(金) 04:27:17.610929デフォルトの名無しさん
2011/12/09(金) 06:28:53.05アルファベットをひとつずつずらすには、どうやって書いたらいいでしょうか?
サクラエディタでの置換を考えてます
0930デフォルトの名無しさん
2011/12/09(金) 07:28:01.39それはプログラムを作ったほうがいいね。普通のテキストエディタの正規表現では一括は無理ぽ。
perlをインストールしてコマンドプロンプトから呼び出して使えばperlのプログラムと正規表現を使った
置換が出来て便利ですお。
一文字ずつ置換したい場合はtrが便利
http://itpro.nikkeibp.co.jp/article/Reference/20080930/315784/
0931デフォルトの名無しさん
2011/12/09(金) 07:30:29.2927回置換するしかないんじゃね?
0932デフォルトの名無しさん
2011/12/09(金) 07:31:14.75Apsalyっていうマイナーなエディタなら並列置換ができるよ
0933デフォルトの名無しさん
2011/12/09(金) 12:50:16.63linuxのsedで一発のような気がする。
シーザー暗号で有名なロジックだから、簡単に解決する方法いくつもあると思う。
0934851
2011/12/09(金) 13:02:06.78鬼車用の正規表現でよければどうぞ。この正規表現は式全体にマッチします。
(?!(?>\(+\g<項>\)+)(?!\g<演>)|(?>\g<項>)(?!\g<演>))(?<!\(|\g<演>)(?:\g<項>|\g<カ>)(?>(?:\g<演>(?:\g<項>|\g<カ>))*)
(?!\g<演>|\))(?<項>[a-z\d]+){0}(?<演>[\+\*]){0}(?<カ>\((?:\g<項>|\g<カ>)(?:\g<演>(?:\g<項>|\g<カ>))*\)){0}
長いから改行入れてます。改行を消して繋げて。
項に使える文字は[a-z\d]で指定しています、使用環境に合わせて書き換えて。
名前の意味
<項> = 1つの項
<演> = 演算子
<カ> = 開始カッコから閉じカッコまでの一対のカッコにマッチ。入れ子に対応しており、中にカッコが入っていても
開始カッコに対応する閉じカッコまでマッチします。
鬼車のオプションはONIG_SYNTAX_PERLで。大文字小文字の区別は無しで。
0935デフォルトの名無しさん
2011/12/09(金) 14:03:02.79プログラムの機能と合わせてこそ真価を発揮するぽ
0936デフォルトの名無しさん
2011/12/09(金) 14:48:23.500937841
2011/12/09(金) 15:48:15.71項のC_TERMについてはどうすればいいでしょうか?
簡略化して再依頼です。
項には1-9の数字一桁だけとして([1-9])、
(と)と+と*のみを演算子とした式にマッチする正規表現はどう書けばいいでしょうか?
(1+1)*2 ⇒MATCH
(1+2)*(3+4) ⇒MATCH
((1+2*) ⇒UNMATCH
等
0938デフォルトの名無しさん
2011/12/09(金) 15:49:03.43(abc+cde
これにマッチしたんだけど
0939デフォルトの名無しさん
2011/12/09(金) 15:52:43.92あ、ONIG_SYNTAX_DEFAULTになってた。
ONIG_SYNTAX_PERLにして実行したら
ERROR: undefined group option
って出たけどどうすればいんでしょ。
できればサンプルコードを…
0940デフォルトの名無しさん
2011/12/09(金) 16:44:16.26tr "[A-Z]" "[B-Z]A"
0941デフォルトの名無しさん
2011/12/09(金) 17:09:55.580942デフォルトの名無しさん
2011/12/09(金) 17:11:48.570943851
2011/12/09(金) 18:02:20.87戻り読みの判定をミスってた。いらないと思って付けなかった判定が必要だった。
修正前 (?<!\(|\g<演>)
修正後 (?<!\(|\g<演>|[a-z\d])
後で書き直したものを貼ります。
0944デフォルトの名無しさん
2011/12/09(金) 20:59:56.92ちゃんとレス読んでるか?
C#の正規表現は再帰に対応していないから、いくら頑張っても括弧の対応はチェックできない。
さっさと諦めなさい。
0945デフォルトの名無しさん
2011/12/09(金) 21:30:34.71標準で用意されてないだけでお手上げしちゃう人ってどうなの。
0946think49 ◆bKk/qcAKuM
2011/12/09(金) 21:32:38.051回の正規表現でマッチさせることを諦めるだけでいいんじゃないの?
複数回マッチさせれば問題ない
0947デフォルトの名無しさん
2011/12/09(金) 21:34:53.740948デフォルトの名無しさん
2011/12/09(金) 21:35:20.860949デフォルトの名無しさん
2011/12/09(金) 21:50:33.110950デフォルトの名無しさん
2011/12/09(金) 21:56:51.13C#の正規表現は鬼車やPCREのものとは互換性はないが再帰に対応しているぞ
http://msdn.microsoft.com/ja-jp/library/bs2twtah.aspx#balancing_group_definition
0951デフォルトの名無しさん
2011/12/09(金) 22:03:58.64正規表現についてそのような小手先技を極めるよりも、本質的に正規表現はプログラム目的でもないしそのような言語でもないってことをまず理解した方がいい
0952デフォルトの名無しさん
2011/12/09(金) 22:38:02.19プログラム組んだ方が速くて簡単ならそっちがいい。
0953デフォルトの名無しさん
2011/12/09(金) 22:59:48.66小手先でも生産性が低くても別にいいじゃない
今回みたいに反面教師にもなるわけだし
0954デフォルトの名無しさん
2011/12/09(金) 23:15:21.080955デフォルトの名無しさん
2011/12/10(土) 01:03:53.46C#
●検索か置換か?
置換
●説明
文字列の中間にある数字を検索して置き換えたい。
●対象データ(ex.)
hogehoge-123.txt → hogehoge-num.txt
hogehogex-123.doc → hogehogex-num.doc
0956デフォルトの名無しさん
2011/12/10(土) 01:10:35.52まず、「文字列の中間」を定義してください
0957デフォルトの名無しさん
2011/12/10(土) 01:13:13.87この数字があるかないかの確認はすでに済ませてあります。
0958デフォルトの名無しさん
2011/12/10(土) 01:16:46.27検索: -\d+\(?=.[a-z\d]+$)
置換: -num
0959デフォルトの名無しさん
2011/12/10(土) 01:17:29.010961デフォルトの名無しさん
2011/12/10(土) 01:36:26.03ありがとー!
0962デフォルトの名無しさん
2011/12/10(土) 07:35:12.31ABCこの間に文字列があったりなかったりDEF
結果
DEF
"ABC"よりも後続にある(最初の)"DEF"だけを対象としたいです
戻り読み条件が、長さ一定でなくてもOKならばできるのですが・・・
0963デフォルトの名無しさん
2011/12/10(土) 08:48:42.15ABC.*?(DEF)
0964デフォルトの名無しさん
2011/12/10(土) 09:04:23.43ABC.*?\KDEF
0965デフォルトの名無しさん
2011/12/10(土) 09:38:11.060966デフォルトの名無しさん
2011/12/10(土) 10:09:40.90つ\s+正規表現の入門書
0967デフォルトの名無しさん
2011/12/10(土) 13:20:46.810968デフォルトの名無しさん
2011/12/10(土) 13:56:35.94[⊃|つ]\s+正規表現の入門書
0969デフォルトの名無しさん
2011/12/10(土) 14:28:53.54可変長の戻り読みが可能で(\Kより前をマッチ文字列に含めない)、置換操作で同じ文字列の置換をさせないことができる
s/(foo)bar/$1/g
s/foo\Kbar//g
0970デフォルトの名無しさん
2011/12/10(土) 14:59:24.060971デフォルトの名無しさん
2011/12/10(土) 16:15:10.95Perl 5.10以降とかpcreとかboost regexとか。
あとは>>192とか。サクラエディタではまだうまく動かないんだっけ?
0972デフォルトの名無しさん
2011/12/10(土) 16:47:26.370973デフォルトの名無しさん
2011/12/10(土) 16:51:02.92別物だろ。
0974デフォルトの名無しさん
2011/12/10(土) 18:29:05.11中身のことだろ?
0975デフォルトの名無しさん
2011/12/10(土) 22:34:32.09こういう馬鹿って何のために生きてるんだろうなぁ。
0976デフォルトの名無しさん
2011/12/10(土) 23:00:08.72ところでおまえは何のために生きてるんだ?
0977デフォルトの名無しさん
2011/12/10(土) 23:20:49.650978デフォルトの名無しさん
2011/12/10(土) 23:24:10.29http://ideone.com/clone/ej7Xf
0979デフォルトの名無しさん
2011/12/10(土) 23:27:34.36みなさん、私の事をマッチと呼んでくさ(ry
0980デフォルトの名無しさん
2011/12/10(土) 23:29:23.820981デフォルトの名無しさん
2011/12/10(土) 23:30:13.030982デフォルトの名無しさん
2011/12/10(土) 23:33:17.650983デフォルトの名無しさん
2011/12/10(土) 23:34:20.560984デフォルトの名無しさん
2011/12/10(土) 23:35:58.63http://hibari.2ch.net/test/read.cgi/tech/1322908056/l50
0985デフォルトの名無しさん
2011/12/10(土) 23:36:10.990986デフォルトの名無しさん
2011/12/11(日) 00:07:09.56s/近藤[ ]*?正彦/マッチ/g
0987デフォルトの名無しさん
2011/12/11(日) 00:26:56.15C#を初めて使った。括弧対応取れるだけの気がする。
http://ideone.com/CwPky
0988デフォルトの名無しさん
2011/12/11(日) 01:08:01.91基本的な学習すらしないで人に聞いて済まそうという姿勢は頂けない。
0989デフォルトの名無しさん
2011/12/11(日) 02:35:31.34bison(バイソン)とは構文解析器を生成するパーサジェネレータの一種であり、CコンパイラとしてのGCCのサポートのために[要出典]開発されたフリーソフトウェアである。
http://ja.wikipedia.org/wiki/Bison
ANTLR(ANother Tool for Language Recognition)とは、LL(k)構文解析を用いたパーサジェネレータである。
http://ja.wikipedia.org/wiki/ANTLR
Coco/R は、対象となる言語の属性付き文法を入力とし、その言語の字句解析器と構文解析器を生成するパーサジェネレータである。
http://ja.wikipedia.org/wiki/Coco/R
0990デフォルトの名無しさん
2011/12/11(日) 02:58:24.830991851
2011/12/11(日) 06:42:36.51(?!(?>\(+\g<項>\)+)(?!\g<演>)|(?>\g<項>)(?!\g<演>))(?<!\(|\g<演>)(?:\g<項>|\g<カ>)
(?>(?:\g<演>(?:\g<項>|\g<カ>))*)(?!\g<演>|\))(?<項文字>
[^\x00-\x20\-+*/=()<>]
){0}(?<項>(?<!\g<項文字>)(?>\g<項文字>
{1,30}
)(?!\g<項文字>)){0}(?<演>[\+\*]){0}(?<カ>\((?:\g<項>|\g<カ>)(?:\g<演>(?:\g<項>|\g<カ>))*\)){0}
3行目で項に使える文字を設定出来ます。↑の設定では以下の文字を使えなくしてます。
・アスキーコード表での16進数の00番から20番までの文字(改行や半角スペースなど)
・-、+、*、/、=、(、)、<、> の9文字
他に項の文字として含まれては困る文字があったら [^ ] の中に追加していって下さいね。
例、[^\x00-\x20\-+*/=()<>あいうえお] ← あいうえおの5文字が項を構成する文字から追加で除外されます。
5行目では1つの項の文字の長さを設定出来ます。上の設定では1文字以上30文字以下に設定してあります。
0992851
2011/12/11(日) 07:21:44.82>項には1-9の数字一桁だけとして([1-9])
>>991の3行目で項に使える文字を設定します。この場合は3行目を↓に書き換えるだけです。
[1-9]
[^ ] とすると"使えない"文字の設定になります。
[ ] とすると"使える"文字の設定になります。
>項のC_TERMについてはどうすればいいでしょうか?
>>991の正規表現は式全体にマッチする正規表現です。この正規表現で式全体を取り出し、項の部分がC_TERMに
マッチするかをテストして下さい。
今回の場合、項以外の文字は(、)、+、*の4文字だけなので、それ以外の文字列が項です。
↓の正規表現で項が1つずつ取り出せます。
[^()+*]+
取り出した文字列がC_TERMにマッチするかテストするコードを書いて下さい。すべての項がC_TERMにマッチすれば
照合完了です。C_TERMにマッチするかテストすると同時に置換もすれば目的達成です。
>>939
>ERROR: undefined group option
今回の正規表現では<項>など、グループの名前として漢字を使っていますが、C#では半角文字しか
認識出来ないのかも知れません。代わりに<TERM>などのように半角文字の名前に書き換えると動くかも知れません。
>サンプルコード
C#の環境はないので申し訳ないけど他の方にお願いしてみて下さい。^-^;
0993デフォルトの名無しさん
2011/12/11(日) 10:21:22.31http://hibari.2ch.net/test/read.cgi/tech/1323566370/
0994デフォルトの名無しさん
2011/12/11(日) 10:43:31.79おつうめ
0996939
2011/12/11(日) 15:01:04.31ONIG_SYNTAX_PERLにするとエラーが出ることには変わりなかったですorz
> r = onig_new(®, pattern, pattern + strlen((char* )pattern),
> ONIG_OPTION_DEFAULT, ONIG_ENCODING_UTF8, ONIG_SYNTAX_PERL, &einfo);
こうじゃないってことですかね。
0997デフォルトの名無しさん
2011/12/11(日) 15:01:38.980998デフォルトの名無しさん
2011/12/11(日) 15:13:00.61ONIG_SYNTAX_PERL_NGだろ?
0999939
2011/12/11(日) 15:15:22.79動きました!
>>934で
> 鬼車のオプションはONIG_SYNTAX_PERLで。大文字小文字の区別は無しで。
と書かれていたので><
ありがとうございました
1000デフォルトの名無しさん
2011/12/11(日) 15:17:33.7110011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。