[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 2chのread.cgiへ]
Update time : 06/01 13:07 / Filesize : 113 KB / Number-of Response : 507
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Regular Expression(正規表現) Part12



1 名前:デフォルトの名無しさん [2013/12/17(火) 14:19:52.00 ]
Regular Expressionスレです。

質問する場合は必ず実装言語や処理系ソフトウェア名を示してください。

前スレ
Regular Expression(正規表現) Part11
toro.2ch.net/test/read.cgi/tech/1362913813/


天ぷら等2以降

85 名前:デフォルトの名無しさん [2013/12/22(日) 12:32:08.28 ]
PHPです

HTMLのIMGタグから、ファイル名と、
もし幅か高さが指定されていればそれも抽出したいです

<img src="test.jpg">
<img src="test2.gif" width="200">
<img src="test3.png" width="200" height="160">

86 名前:デフォルトの名無しさん mailto:sage [2013/12/22(日) 12:47:55.74 ]
imgタグの仕様が分からなきゃ何とも言えないだろ
widthはパーセント指定できるの?構文解析の仕様は?

87 名前:デフォルトの名無しさん mailto:sage [2013/12/22(日) 12:56:13.97 ]
>>85
HTMLパーサでパースしろ
そしてここには二度と来るな

88 名前:デフォルトの名無しさん [2013/12/22(日) 13:00:48.21 ]
>>68
鬼車知らんけど、
([\(,])([.\s]*?)([,\)])
かな。

89 名前:デフォルトの名無しさん [2013/12/22(日) 13:25:48.13 ]
UTF-8でマルチバイト文字にのみマッチさせる正規表現はありますか?

90 名前:デフォルトの名無しさん mailto:sage [2013/12/22(日) 13:34:14.52 ]
ASCIIの範囲以外ならマルチバイトだろ。

91 名前:デフォルトの名無しさん [2013/12/22(日) 13:44:18.71 ]
>>90
数字だったら\dで表せるけどそういう簡単なのないですか?

92 名前:デフォルトの名無しさん [2013/12/22(日) 14:55:17.89 ]
[^アスキー全文字]+

93 名前:デフォルトの名無しさん mailto:sage [2013/12/22(日) 15:38:51.59 ]
POSIX文字クラスでググレ



94 名前:デフォルトの名無しさん mailto:sage [2013/12/22(日) 19:33:09.96 ]
>>80
四日市市とかで切り分けに失敗する自信がある

95 名前:デフォルトの名無しさん mailto:sage [2013/12/22(日) 20:53:52.69 ]
廿日市市と八日市市、他に何があったかな?
仮に[^:ascii:]{1,6}市?市としても、市名の次に市が付く町名が来たら厄介だな。

POSIX使ってみた([^:ascii:])
知らない人は「鬼車 正規表現」でググればわかる。
WSHとかでは使えないみたいだけど。

96 名前:デフォルトの名無しさん [2013/12/22(日) 21:53:21.53 ]
俺らの脳は市町村をどうやって切り分けてんだろ

97 名前:デフォルトの名無しさん mailto:sage [2013/12/22(日) 22:37:59.73 ]
>>95
四日市には市場町という地名があるようだ…

98 名前:デフォルトの名無しさん [2013/12/22(日) 23:06:47.37 ]
ワラタw

99 名前:デフォルトの名無しさん [2013/12/22(日) 23:10:22.38 ]
結局ブラウザごとにJSの正規表現エンジンって違うの?

100 名前:デフォルトの名無しさん mailto:sage [2013/12/22(日) 23:37:00.86 ]
>>97
なりたちからして自然だと思うが

101 名前:デフォルトの名無しさん mailto:sage [2013/12/23(月) 01:00:16.43 ]
>>80>>95
もう既存の市町村名から正規表現生成するスクリプト作ってしまったほうが良い気が

102 名前:デフォルトの名無しさん mailto:sage [2013/12/23(月) 07:58:36.38 ]
>>101
既存の市町村名全部持って、普通にマッチングした方がいいだろ...

103 名前:デフォルトの名無しさん [2013/12/23(月) 14:36:10.76 ]
これだけ注意すればよさそうだな
四日市市
野々市市
廿日市市



104 名前:デフォルトの名無しさん [2013/12/23(月) 14:39:25.15 ]
ちなみに八日市市は現存しない
www.city.higashiomi.shiga.jp/0000000610.html
平成17年2月11日には、
1市4町(八日市市・永源寺町・五個荘町・愛東町・湖東町)が合併し「東近江市」が誕生しました。

105 名前:デフォルトの名無しさん mailto:sage [2013/12/23(月) 14:42:30.11 ]
プログラマを救うために住所表記に対する正規表現の使用を禁止する法律が求められている

106 名前:デフォルトの名無しさん mailto:sage [2013/12/23(月) 15:44:28.03 ]
住所はいろいろあるからねー
www.addressmatch.jp/rule.html

107 名前:デフォルトの名無しさん [2013/12/23(月) 19:50:41.11 ]
>>68
2番目の条件がきつい

108 名前:デフォルトの名無しさん [2013/12/23(月) 23:14:24.79 ]
引数になってる文字列のコンマを別のものに置き換えて、
それからやったらどうよ
それでソースコードのコンマを処理し終わったらもとに戻す

[[comma]]とか

109 名前:デフォルトの名無しさん [2013/12/23(月) 23:53:19.75 ]
文字列の中に[[comma]]があったらどうする気だ。

110 名前:デフォルトの名無しさん mailto:sage [2013/12/24(火) 04:03:10.05 ]
>>102
大差なくね?
ああまあ市町村名DBをそのまま食わせられるからメンテ楽ってのはあるか…
しかし一度regexp.exec(str)すれば即結果が得られるってのもそれはそれで楽
>>104
古い住所入れる奴が居るから・・・
>>108-109
メタ文字決めて先にメタ文字のエスケープしろよ、定番だろ。

111 名前:デフォルトの名無しさん [2013/12/24(火) 15:37:26.19 ]
クリスマス関連の文字列を見たくないからネットサーフィンの際に
クリスマス関連の文字列でマッチしてクリスマス関連の文字列を含むウェブページをフィルタリングしたいのですが
どういう正規表現で書けばいいでしょうか

112 名前:デフォルトの名無しさん mailto:sage [2013/12/24(火) 17:47:45.62 ]
>>111
s/クリスマス関連/あぼーん/g

113 名前:デフォルトの名無しさん mailto:sage [2013/12/24(火) 19:25:31.28 ]
ブラウザの設定をアラビア語とかペルシャ語にしたらどうだい



114 名前:デフォルトの名無しさん [2013/12/25(水) 12:13:30.69 ]
s/.*(クリスマス|X'mas).*/あぼーん/g

115 名前:デフォルトの名無しさん [2013/12/25(水) 13:17:37.81 ]
Perl

痴漢

$1200.00
\24980000

3桁ごとに「,」を入れたい
$1,200.00
\24,980,000

116 名前:デフォルトの名無しさん [2013/12/25(水) 18:08:29.45 ]
s/(\d\d\d(\.|$))/,$1/

117 名前:デフォルトの名無しさん mailto:sage [2013/12/25(水) 19:07:10.42 ]
このスレにいる奴はこれどれくらいできる?
regex.alf.nu/

118 名前:デフォルトの名無しさん mailto:sage [2013/12/25(水) 22:14:50.89 ]
>>117
プログラミングの役に立たない無意味な正規表現を作る能力で何の能力を測るのかが不明。

119 名前:デフォルトの名無しさん mailto:sage [2013/12/26(木) 11:54:11.09 ]
正規表現を使ったただの遊びで、
何か測るとか 考えすぎっつーか余裕なさすぎ

120 名前:デフォルトの名無しさん mailto:sage [2013/12/26(木) 12:16:44.97 ]
>>117
ちゃんとマッチする物作って、点数が低いとかよくわからん。
マッチさせないギリギリを狙うゴルフなんだろか。

121 名前:デフォルトの名無しさん mailto:sage [2013/12/26(木) 13:58:48.86 ]
>>116
それじゃダメだろ

122 名前:デフォルトの名無しさん [2013/12/26(木) 15:39:20.51 ]
じゃあお前書いてみろよ

123 名前:デフォルトの名無しさん mailto:sage [2013/12/26(木) 15:48:59.72 ]
>>120
パターンの文字数が少ない方が点数が上がる
ドット使いまくり



124 名前:デフォルトの名無しさん [2013/12/26(木) 16:07:49.11 ]
Plain strings (205)
Anchors (204)
Ranges (202)
Backrefs (197)
Abba (183)
A man, a plan (165)
素数の逆転がうまくいかねー

125 名前:デフォルトの名無しさん mailto:sage [2013/12/26(木) 18:48:08.56 ]
>>117
これ解析して正規表現を生成するプログラムは書くことできる?

126 名前:デフォルトの名無しさん mailto:sage [2013/12/26(木) 18:48:35.02 ]
>>125
当たり前だろ

127 名前:デフォルトの名無しさん mailto:sage [2013/12/26(木) 20:13:22.44 ]
>>123
なるほど、fooとか入れてくのね。
ありがd。

128 名前:デフォルトの名無しさん mailto:sage [2013/12/27(金) 06:30:50.86 ]
>>126
Prime(0) を生成するプログラムお願いします。

129 名前:デフォルトの名無しさん mailto:sage [2013/12/27(金) 08:52:28.55 ]
Plain strings (207) foo

130 名前:デフォルトの名無しさん mailto:sage [2013/12/27(金) 18:44:21.67 ]
>>124
^(xx+?)\1+$
の逆だから素直に
^(?!(xx+)\1+$)

131 名前:デフォルトの名無しさん mailto:sage [2013/12/27(金) 23:49:58.74 ]
すいません。VBScriptで
抽出した文字列にダブりがあります。
例:
AAA
BBB
AAA
CCC
BBB
CCC
これを
AAA
BBB
CCC
のように抽出し直すにはどうすればいいでしょうか?

132 名前:デフォルトの名無しさん mailto:sage [2013/12/28(土) 00:43:17.44 ]
>>131
cat text.txt | sort | uniq

133 名前:デフォルトの名無しさん mailto:sage [2013/12/28(土) 06:02:29.57 ]
>>132
重複を削れといっているようだが、整列し直せとは言っていない。



134 名前:デフォルトの名無しさん mailto:sage [2013/12/28(土) 09:24:51.01 ]
>>133
Unixの勉強しましょうね

135 名前:デフォルトの名無しさん mailto:sage [2013/12/28(土) 11:41:43.23 ]
>>131
正規表現スレだぞ
根本的に勘違いしてる
死んで良いよ

136 名前:デフォルトの名無しさん mailto:sage [2013/12/28(土) 12:25:00.00 ]
>>134
?

137 名前:デフォルトの名無しさん [2013/12/28(土) 12:31:59.03 ]
>>133
cat text.txt | sort | uniq

uniqの部分をしっかり見ろよ

138 名前:137 ようわからん mailto:sage [2013/12/28(土) 12:38:28.75 ]
AAA  AAA  AAA  AAA
BBB  BBB  BBB  BBB
AAA          
CCC  CCC  CCC  CCC
BBB  BBB       
CCC  CCC  CCC    
この方法だとuniqしたく無い場合に良い。

139 名前:デフォルトの名無しさん [2013/12/28(土) 12:43:27.01 ]
整列が要件に入っていないのに勝手に整列させるのはまずいって言いたいんじゃないの?
するとsortが使えない、ゆえにuniqが使えないとなって破綻する。
UNIXのコマンドって微妙に使えないのが多くて、微妙に違うだけの同じ目的の
コマンドが多くて困る。
解決案として要件の変更が必ず提示されるのも困る。
それでUNIXは廃れたんじゃないかな?

140 名前:デフォルトの名無しさん mailto:sage [2013/12/28(土) 12:49:05.40 ]
KISSの精神を体現したのがMac。

141 名前:デフォルトの名無しさん mailto:sage [2013/12/28(土) 12:55:41.87 ]
>>139
要件に入ってない範囲なら整列するもしないも自由なのが常識。

142 名前:デフォルトの名無しさん mailto:sage [2013/12/28(土) 12:58:58.73 ]
有るものを押し付けるのがUNIX、お客様の要望するものを用意するのが
Windows。

143 名前:デフォルトの名無しさん mailto:sage [2013/12/28(土) 13:39:07.55 ]
/imsxadlup の /d /l /u の使い方教えて。英語読めないの。
perldoc.jp/docs/perl/5.14.1/perlre.pod#47l



144 名前:デフォルトの名無しさん mailto:sage [2013/12/28(土) 13:46:20.25 ]
>>139
それは使いこなせてないんだろ。
Unixのコマンドは90%の解決を目指してる。その方が使いやすい。
自分の要件に合わせた、それにしか使えないコマンドが欲しいならプログラムすればいい。

145 名前:デフォルトの名無しさん [2013/12/28(土) 14:11:57.43 ]
UNIXのコマンドは微妙に使えないのが使いやすい。
使わなくて済むからだ。
〜ジャーゴンニュースより抜粋〜

146 名前:デフォルトの名無しさん mailto:sage [2013/12/28(土) 14:19:31.38 ]
>>143
/d
この修飾子は、パターンマッチングの際にプラットフォーム固有のロケール(ASCIIなど)を使用するように指示する。
ただし、Unicodeを使うべき理由がある場合はこの設定はそちらが優先される。
この修飾子が具体的にパターンマッチングにどのような変化をもたらすかを以下のサンプルで示した。

/l
この修飾子は、パターンマッチングの際に現在のロケール設定を使用するように指示する。
このロケール設定はコンパイル時のロケールと同じであるとは限らず、
setlocale()を用いて任意のロケール設定を用いることができる。

/u
この修飾子は、パターンマッチングの際にUnicodeのルールを使用するように指示する。

147 名前:デフォルトの名無しさん mailto:sage [2013/12/28(土) 15:07:09.11 ]
>>141
すでに抽出した行と同じ行は除外するというのが最も自然な
アルゴリズムなので、それを期待している可能性が高いから
整列は避けるというのが一番自然。

148 名前:143 mailto:sage [2013/12/28(土) 15:17:11.45 ]
>>146
おお、ありがとうございます。マジで助かりました。
おかげ様でperl 5.14.1の正規表現ルールを全部覚えられました、感謝〜。

149 名前:デフォルトの名無しさん [2013/12/28(土) 15:18:54.48 ]
>>148
どういたしまして。

150 名前:デフォルトの名無しさん mailto:sage [2013/12/28(土) 15:40:23.44 ]
>>147 普通プログラムの問題だとsort()だけで重複が取れたりするから、 sortするのが当たり前だと思う。 ただ実務では300行に1行重複した行が紛れ込んでそれを削るという ケースがほとんどだから、絶対にsortを掛けたりしないもんだけど。

151 名前:デフォルトの名無しさん [2013/12/28(土) 18:44:49.26 ]
Regular Expressionと関係ねえからよそでやれ

152 名前:デフォルトの名無しさん mailto:sage [2013/12/29(日) 01:12:47.99 ]
そもそも要件に「VBScriptで」って入ってる段階でINIXコマンドは使えないって思うもんじゃね?

153 名前:デフォルトの名無しさん mailto:sage [2013/12/29(日) 04:51:41.49 ]
>>152
そこはまぁCygwinとかMinGW+MSYSとかgnuwin32とかの各コマンド入れればいいって話になるんじゃね。
まぁどのみち正規表現じゃないからVBScriptの相談できる場所で聞けよて終わりなんだけど。



154 名前:デフォルトの名無しさん mailto:sage [2013/12/29(日) 09:03:40.37 ]
>>152
「VBScriptで作ったデータの処理」であって「VBScript で処理しろ」とは書いてないけどな。
まあ、一回きりなら Excel でもいいかもしれないし、VBScript で完結させたいなら Dictionary 使うのが楽。

155 名前:デフォルトの名無しさん mailto:sage [2013/12/29(日) 09:15:59.40 ]
ひとこと、
「正規表現ではできません」でいいのでは。

156 名前:デフォルトの名無しさん mailto:sage [2013/12/29(日) 13:27:09.27 ]
perlならいろんなアクセスの仕方があって遊べる問題なんだけどなぁ。
VBSでやるとしたら正規表現の出番は ^.*$ くらいしか無いんじゃ・・これすら必要無いか・・

157 名前:デフォルトの名無しさん mailto:sage [2013/12/29(日) 13:34:16.38 ]
無理矢理正規表現でやるなら

1、最終行が1行目になるように順番を逆さまにする
2、s/^(.*)$(?=[\s\S]*^\1$)[\r\n]*//g;
3、1をする

これで順番通りの結果になる。

158 名前:デフォルトの名無しさん [2014/01/03(金) 02:42:43.46 ]
Twitterの自分のツイートをデータベースに入れていきたいんだが
公式から正規表現で解析できる?

159 名前:デフォルトの名無しさん mailto:sage [2014/01/03(金) 03:57:47.91 ]
API叩けば?

160 名前:デフォルトの名無しさん [2014/01/03(金) 19:20:28.19 ]
英文の中から特定の単語を含むセンテンスを抽出する方法を教えてください

環境はPerlです

161 名前:デフォルトの名無しさん mailto:sage [2014/01/03(金) 20:03:17.54 ]
>>160
センテンスごとに特定の単語を表す正規表現がマッチするか調べる。

162 名前:デフォルトの名無しさん mailto:sage [2014/01/03(金) 22:39:20.14 ]
>>160
センテンスの前と後の改行を条件にする

163 名前:デフォルトの名無しさん mailto:sage [2014/01/04(土) 12:47:08.01 ]
>>160
センテンスの開始と終了を正規表現で表し、「特定の単語」をその間に挟む



164 名前:デフォルトの名無しさん mailto:sage [2014/01/04(土) 13:10:19.31 ]
>>160

$text = '英文';
$keyword = '特定の単語';
$regex = qr/(?:\G|[.?!;])\s*((?=[^.?!;]*\b$keyword\b)[^.?!;]+(?:[.?!;]|\z))/;

while ($text =~ /$regex/g) {
print "$1\n";
}

() や "" などの中に文章が再帰的に書かれているようなものは考慮していない.

165 名前:デフォルトの名無しさん mailto:sage [2014/01/05(日) 13:52:40.26 ]
3.14

166 名前:デフォルトの名無しさん mailto:sage [2014/01/07(火) 08:56:16.73 ]
修正確認しました!ありがとうございました!

Perl正規表現雑技
www.din.or.jp/~ohzaki/regex.htm#WithoutXYZ

167 名前:デフォルトの名無しさん mailto:sage [2014/01/07(火) 19:47:23.30 ]
>>166
こういう計算方法って初めて見た。なんて名前の学問?なんだろう。

168 名前:デフォルトの名無しさん mailto:sage [2014/01/07(火) 21:12:17.73 ]
こういうのか〜、大学で学べるんだねぇ。
ttp://www.ccn.yamanashi.ac.jp/~ysuzuki/automaton/automaton2012_08.pdf

169 名前:デフォルトの名無しさん mailto:sage [2014/01/07(火) 22:41:51.17 ]
PowerShellスクリプトで仮想ドライブイメージのファイルパスを入力した後に、
パス文字列として正しいかどうかのチェックをしたくて次のようなコードを使ってみました。

Write-Host "マウントする仮想ディスクイメージのパスを入力"
Write-Host "例: X:\VHD Images\example01.vhdx"
$ImagePath = Read-Host "場所"
$ImagePath = $ImagePath -Replace "`"",""
Write-Host "入力したパス: "$ImagePath
If($ImagePath -inotmatch "[a-z]`:`\[^/:*?`"<>|]+`.vhdx?") {
【TAB】 Write-Host "正しい形式のパスではありません。"
} Else {
【TAB】 Write-Host "OK"
}

しかし、いくら正しいパスを入力しても「正しい形式のパスではありません。」が返されてしまいます。
コード中の正規表現部分はご覧のとおり [a-z]`:`\[^/:*?`"<>|]+`.vhdx? で、
一応ウェブ上の「PHP正規表現チェッカー」とJane用の「ReplaceStr Tool」では問題ありませんでした。
エスケープ文字が\ではなく`という点にも気を付けてチェックしました。
ここまでやってみましたが、問題点の洗い出しができすに困っています。
「OK」を返されるにはどうしたらいいのでしょうか?
尚、Test-Pathコマンドレットの利用はここでは扱わないものしてお願いします。

170 名前:デフォルトの名無しさん mailto:sage [2014/01/08(水) 03:15:48.51 ]
"[a-z]:\\[^/:*?`"<>|]+\.vhdx?"

171 名前:デフォルトの名無しさん mailto:sage [2014/01/08(水) 04:27:05.50 ]
>>170
あれ?エスケープ文字は`だってあっちこっちに書いてあるからその通りにしてたけど、それで動くんですね。
どうもありがとうございます。

172 名前:デフォルトの名無しさん mailto:sage [2014/01/08(水) 16:38:03.89 ]
最後に $ 付けないと誤爆しそう。

"例: X:\VHD Images\example01.vhdx.damy"

あと 「ReplaceStr Tool」 は対象テキストの改行が無視される仕様なので
改行を含むテキストにマッチさせたいときはご注意を。

173 名前:デフォルトの名無しさん mailto:sage [2014/01/09(木) 06:00:28.69 ]
>>172
ありがとうございます。
自分用に使う分には誤爆の心配は一応無いのでいいのですが、きっちりやる時はそうですね。
おっしゃるとおり、ReplaceStr Toolは1行だけのテストにしか使えませんね。
まだ試してはないけど、ベクターにも何やらありますね。



174 名前:デフォルトの名無しさん [2014/01/11(土) 20:59:48.36 ]
C言語のプログラムのソースから宣言されてる全変数を抜き出す正規表現を教えてください

175 名前:デフォルトの名無しさん mailto:sage [2014/01/11(土) 23:17:13.53 ]
正規表現じゃ無理

176 名前:デフォルトの名無しさん mailto:sage [2014/01/12(日) 00:02:13.49 ]
>>174
変数宣言に関する言語の文法とあなたのコーディングルールを全て列挙できたら考えないこともない。
あとプリプロセッサとコメントは禁止で。
どぞっ。

177 名前:デフォルトの名無しさん mailto:sage [2014/01/12(日) 04:23:26.19 ]
int foo, *bar, baz[8];
char *tai_pei64, honkon32[32];

とりあえずこれだけで考えると
int、charで始まる行で、a〜z、A〜Z、0〜9、_、*を含む部分か?
関数を除外するには"("を含んだ行なら無視するか。

178 名前:デフォルトの名無しさん mailto:sage [2014/01/12(日) 20:29:15.96 ]
目的が分からんけど ctagsとか使ったほうが現実的なんじゃないの

179 名前:デフォルトの名無しさん mailto:sage [2014/01/13(月) 00:11:59.89 ]
ideone.com/3wrY6i
俺にはムリだな

180 名前:デフォルトの名無しさん [2014/01/16(木) 13:18:43.71 ]
age

181 名前:デフォルトの名無しさん [2014/01/16(木) 19:04:22.39 ]
htmlファイルから、画像リンクの画像のディレクトリだけ取得する方法を教えてください

182 名前:デフォルトの名無しさん mailto:sage [2014/01/16(木) 20:22:08.30 ]
ターゲットのhtmlのソースを読む

183 名前:デフォルトの名無しさん mailto:sage [2014/01/16(木) 22:02:42.42 ]
>>181

>>2



184 名前:デフォルトの名無しさん mailto:sage [2014/01/16(木) 22:12:38.67 ]
>>181
basedir使えよ。環境知らんが。

185 名前:デフォルトの名無しさん mailto:sage [2014/01/16(木) 23:37:49.09 ]
 定期的にHTMLのパースに関して質問してくる奴が居るが同一人物か?






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<113KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef