[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 05/14 11:55 / Filesize : 259 KB / Number-of Response : 938
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


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

正規表現道場



1 名前:nobodyさん [2007/01/11(木) 02:40:43 ID:uW7xEbZY]
【正規表現道場の掟】

・言語不問

・質問も大歓迎。使用言語を書くのを忘れずに。

正規表現と関係ない話・質問は他スレへどうぞ。

823 名前:nobodyさん mailto:sage [2011/11/08(火) 01:11:57.96 ID:???]
(?!市).\s

824 名前:nobodyさん mailto:sage [2011/11/08(火) 08:57:43.48 ID:???]
>>823
町や村にもヒットさせろよw
群はいらないか

825 名前:nobodyさん mailto:sage [2011/11/08(火) 10:58:00.13 ID:???]
(東京都|北海道|(?:京都|大阪)府|[県市区群])\s+

\1

826 名前:nobodyさん mailto:sage [2011/11/08(火) 10:58:59.04 ID:???]
ああ、勘違いした
>>825は流してくれ

827 名前:nobodyさん mailto:sage [2011/11/08(火) 12:21:27.42 ID:???]
>>821
(?![市区町村]).\s

828 名前:816 != 818 mailto:sage [2011/11/08(火) 13:46:47.91 ID:???]
郡、な。

829 名前:nobodyさん mailto:sage [2011/11/08(火) 20:01:17.27 ID:???]
しゅくちょく

830 名前:nobodyさん mailto:sage [2011/11/09(水) 02:32:34.16 ID:???]
>>827
空白にマッチしたいんだから↓の間違いだよね。
(?<![市区町村])\s+


831 名前:nobodyさん [2011/11/23(水) 06:53:59.84 ID:V5f5mApl]
![[
 文字列
 ![[別の文字]]
 ![[ほげほげ]]
]]

![[何か]]←これが1単位で、↑こんなの中から最短マッチで抽出したく、以下のようにしました。

$pattern = '/!\[\[([^\[\]]+)\]{2,2}?/';

しかしこの場合、ブラケットが使えないので困っています。

![[ この中に[←とか]←があると使えない ]]

最短マッチさせるにはどう書けばいいでしょうか?



832 名前:nobodyさん mailto:sage [2011/11/23(水) 07:02:11.30 ID:???]
$pattern = '/!\[\[.+?]]{2,2}?/';


833 名前:nobodyさん [2011/11/23(水) 09:23:16.47 ID:V5f5mApl]
>>832
ありがとうございます。
ちなみに↓こうでしょうか?
$pattern = '/!\[\[.+?\]{2,2}?/';

しかしながら、やはり最長マッチになってしまいます。
うっかり書き忘れたのですが、PHPのpreg_matchで行なっています。
PCRE準拠(Prel互換)らしいです。

834 名前:nobodyさん [2011/11/23(水) 09:52:54.59 ID:V5f5mApl]
あ、すみません、できました!
が、1行だといけるのですが、複数行にまたがった場合失敗しました。
↓このような場合

![[
 文[字]列
 ![[別の文字]]
 ![[ほげほげ]]
]]

オプションにmやsを付けてみましたがダメです。

835 名前:nobodyさん mailto:sage [2011/11/24(木) 01:59:39.52 ID:???]
>>834
入れ子の対応とりつつマッチするには
Subroutine Referencesを使えば良いよ。

<?php
$re = '/(?:!\[\[(?:(?!!\[\[)(?!\]\]).|(?R))*\]\])/s';
$text = "![[
  文[字]列
  ![[別の文字]]
  ![[ほげほげ]]
]]";
$position = array();
for ($i = 0; $i < strlen($text); $i++) {
  $pos = strpos($text, '!', $i);
  if (end($position) !== $pos)
    $position[] = $pos;
}
foreach ($position as $pos) {
  $t = substr($text, $pos);
  if (($pos === 0 || $pos) && preg_match_all($re, $t, $match, PREG_SET_ORDER)) {
    var_dump($pos); var_dump($t); var_dump($match); print "----\n";
  }
}
?>


836 名前:nobodyさん [2011/11/25(金) 00:51:55.86 ID:7pZprZ8q]
>>835
うぉ!?ありがとうございます!

837 名前:nobodyさん mailto:sage [2011/11/25(金) 01:08:56.26 ID:???]
>>835
おーこれでいけそうです!
なるほど、こんなやり方がありましたか。とても勉強になりました!


838 名前:nobodyさん [2011/11/27(日) 21:48:09.61 ID:ZbhJICcu]
jsonの形式を配列に変換することは出来ないでしょうか?
phpのjson_decodeだと、どうやら変換エラーが出るようで、正規表現で解決できればと思うのですが。
{"xType":{"0":"main","1":"main","2":"main","3":"main","4":"main"},"xNum":{"0":"6","1":"6","2":"5","3":"5","4":"6"},"yType":{"0":"main","1":"main","2":"main","3":"main","4":"main"},"yNum":{"0":"5","1":"4","2":"4","3":"5","4":"5"}}
を[xType][0]=main,[xType][1]=main・・・・・的な感じなんですが。

どなたかお願いいたします。

839 名前:nobodyさん mailto:sage [2011/11/27(日) 23:58:55.08 ID:???]
>>838
json_decodeでエラーが出ないんだけど

840 名前:nobodyさん [2011/11/28(月) 08:12:12.66 ID:NxvSoLFs]
>>839
全体はもっと長いのですが...

841 名前:nobodyさん mailto:sage [2011/11/28(月) 11:38:12.26 ID:???]
つーかエラーになるようなjsonモドキを吐く方をなんとかしろよ。



842 名前:nobodyさん mailto:sage [2011/11/28(月) 11:51:50.21 ID:???]
>>840
なぜエラーの原因を特定しないのですか...

843 名前:nobodyさん mailto:sage [2011/11/28(月) 11:52:31.97 ID:???]
あと、json形式でないものを、json形式だと思い込んで正規表現書いても結局うまくいかないとおもう。

844 名前:nobodyさん [2011/11/28(月) 20:38:17.18 ID:cgQZB7ih]
{"1":{"0":{"n":{"xType":{"0":"main","1":"main","2":"main","3":"main","4":"main"},"xNum":{"0":"3","1":"5","2":"5","3":"3","4":"3"},"yType":{"0":"main","1":"main","2":"main","3":"main","4":"main"},
"yNum":{"0":"5","1":"5","2":"3","3":"3","4":"5"}}},"1":{"b":{"xType":{"0":"main","1":"main","2":"main","3":"main","4":"main"},"xNum":{"0":"5","1":"6","2":"6","3":"5","4":"5"},"yType":{"0":"main","1":"main","2":"main","3":"main","4":"main"},
"yNum":{"0":"5","1":"5","2":"4","3":"4","4":"5"}}},"2":{"l":{"xType":{"0":"main","1":"main","2":"main","3":"main","4":"main"},"xNum":{"0":"4","1":"5","2":"5","3":"4","4":"4"},"yType":{"0":"main","1":"main","2":"main","3":"main","4":"main"},
"yNum":{"0":"5","1":"5","2":"4","3":"4","4":"5"}}}}}
一応こんな感じのデータです。
json形式だと思うんですが、phpのほうでは

Syntax error, malformed JSON
とつれない回答です。

845 名前:nobodyさん mailto:sage [2011/11/28(月) 21:06:49.29 ID:???]
>>844
デコードできたよ(PHP 5.3.2)

846 名前:nobodyさん [2011/11/28(月) 21:16:33.29 ID:cgQZB7ih]
マジっすか??
デコードの仕方が悪いのでしょうか??
できればやり方を教えてください。

847 名前:nobodyさん mailto:sage [2011/11/28(月) 22:13:12.05 ID:???]
こうならないためにもどんなデータをどうやったらエラーになったかを書くのが重要なんだけど。

848 名前:nobodyさん mailto:sage [2011/11/28(月) 22:14:25.01 ID:???]
連レスすまんが、>>838をデコードするのとやり方は変えてないよ。
>>838はデコードできるんだろうから、環境面かもしれないよ

849 名前:846 [2011/11/28(月) 22:41:14.25 ID:NxvSoLFs]
単純にjavascriptの配列をjsonに変換させてからhidden属性に入力。
それをPOSTで送ったPHPファイルで
json_decode($_POST['hidden'])
って形でやってます。hiddenで送ること自体が間違い??
それともhiddenを何かに変換しなければいけないの??

850 名前:nobodyさん mailto:sage [2011/11/28(月) 23:04:04.57 ID:???]
hidden属性とか$_POST['hidden']とか胡散臭そうなのが混ざってるし。
問題の切り分けの仕方について続けたいなら、くだ質とか、超初心者スレみたいなところでどうぞ

851 名前:nobodyさん [2011/11/29(火) 23:04:45.51 ID:gKGxmzY9]
838は出来たけど、844は出来なかった。
同一ファイル上で変数を入れてみた結果として。



852 名前:nobodyさん [2012/01/01(日) 16:05:26.90 ID:vpch3S2x]
整数の桁数上限なし、小数点以下2位までの少数をマッチさせたいのですがうまくいきません。

str.match(/[0-9]*.[0-9][1-9]/g)

どこが間違っているのか教えていただけますでしょうか。
PHP Version 5.2.16です

宜しくお願い致します。

853 名前:nobodyさん mailto:sage [2012/01/01(日) 17:00:46.35 ID:???]
それはJavaScriptにしか見えないけど

854 名前:nobodyさん [2012/01/01(日) 18:04:13.68 ID:Zget/7Sh]
>>852
本当にPHPだとすれば、あってるところのほうが少ない件
preg_match_all('/[0-9]*\.[0-9][0-9]/');

1/100の位は積極的にゼロを省かなきゃならないの?[0-9]でよくね?
あと、単なる整数とか、小数点以下3位以上の数字をどう扱いたいのかによっても変わってくる。
そもそも実際のところは「PHPで出力するHTMLに書かれたJavaScript」あたりかな?

855 名前: 【大吉】 【1107円】 mailto:sage [2012/01/01(日) 19:46:02.61 ID:???]
>>852
マッチさせる文字列が数値のみであれば、
数値判定をした方がいいのでは?

文字であっても強制的に数値に変換する等が可能であれば、
かなり楽です。

856 名前:852 mailto:sage [2012/01/01(日) 23:42:04.11 ID:???]
>853,854,855
大変失礼しました。
854さんのおっしゃる通り、「PHPで出力するHTMLに書かれたJavaScript」でした。

その理解すら不十分でした。申し訳ございませんでした。

857 名前:nobodyさん mailto:sage [2012/01/02(月) 17:24:24.78 ID:???]
>>852
// 1 of 2
// 例として円周率pi
var value = "3.1415926";
var target = value;
// 小数部が無ければ、追加する
if (target.indexOf(".") < 0) {
 target = target.concat(".00");
}
var integral_part_1 = 0;
if (target > 0){
 integral_part_1 = Math.floor(target);
}else{
 integral_part_1 = Math.ceil(target);
}
//document.write(value," の整数部は ", integral_part_1, "<br>");


858 名前:nobodyさん mailto:sage [2012/01/02(月) 17:25:16.42 ID:???]
>>852
// 2 of 2
// 小数第1位を取得
target = target - integral_part_1;
target = target * 10;
var integral_part_2 = 0;
if (target > 0){
 integral_part_2 = Math.floor(target);
}else{
 integral_part_2 = Math.ceil(target);
}
//document.write(value," の小数第1位部分は ", integral_part_2, "<br>");
// 小数第2位を取得
target = target - integral_part_2;
target = target * 10;
var integral_part_3 = 0;
if (target > 0){
 integral_part_3 = Math.floor(target);
}else{
 integral_part_3 = Math.ceil(target);
}
document.write(value," の小数第2位部分は ", integral_part_3, "<br>");


859 名前:nobodyさん [2012/01/06(金) 21:48:56.02 ID:b1y0AA6H]
ここの皆さんのレベルでは簡単すぎるのかもわかりませんが教えてください
Firefoxブラウザのスクリプトで「Google Reader NG Filter」というものがあります
これはRSS文中に特定のキーワードが一致していれば自動的に削除するものです
サンプルとしてADとPRを消す正規表現がはじめから入っています
^\W?(?:ADV?|PR)\b
こういうものです
先頭にADやPRがあれば広告を見なくてもすむわけです

これを応用して見たくないキーワードが含まれているものを消すべく
自分なりに試行錯誤しているのですが上手くいきません
文中のキーワードなので当然^は不要ですし、正規表現のサイトで勉強して改変しても
動かないのです
iPhoneとAndroidというキーワードが含まれていたら削除するという表現をお願いします

860 名前:nobodyさん [2012/01/06(金) 23:01:27.07 ID:pwr91DzE]
(?:iPhone|Android)でいいだろ。
上記にマッチした上で、本文を削除する部分もサンプルからコピペしないとダメだぞ。

861 名前:nobodyさん mailto:sage [2012/01/06(金) 23:25:15.04 ID:???]
.*(iPhone|Android).*



862 名前:nobodyさん mailto:sage [2012/01/06(金) 23:26:11.05 ID:???]
>>860
それやったけど、ダメでした…
普通はこれにしますよね

863 名前:nobodyさん [2012/01/07(土) 00:03:18.47 ID:n5aAiFGN]
>>862
いや少なくとも>>860の正規表現はマッチするはずなので、たとえば
1. マッチさせる対象が本文ではなくタイトルになっている
2. 削除する処理がどうにかなっている
3. その他

864 名前:nobodyさん mailto:sage [2012/01/07(土) 00:05:14.52 ID:???]
>>859
これか
userscripts.org/scripts/show/67840
親ルール,URL,他の条件にマッチしてないんじゃないか?
あと、大文字小文字をチェックしているとか

865 名前:nobodyさん mailto:sage [2012/01/07(土) 00:56:55.41 ID:???]
>ここの皆さんのレベルでは簡単すぎるのかもわかりませんが教えてください
こんな枕詞はいらん。

866 名前:nobodyさん [2012/01/13(金) 15:32:24.50 ID:QW0sWV6a]
<a href="example.com/aaa.jpg"><img src="examle.com/bbb.jpg"></a>

これで<a hrefがない場合に限り<img srcにマッチさせてURIを取得するにはどうすればいい?

preg_match_all('/(?:(?(?=<a href)|src))="([^"]+)/si', $html, $m);
だと<a hrefがあるときは<a hrefの部分は何もマッチしなくてsrcの方がマッチするみたい

867 名前:nobodyさん mailto:sage [2012/01/13(金) 21:09:54.88 ID:???]
まず<a hrefがないというのが何処にないのか、土台をはっきりさせないと

868 名前:nobodyさん mailto:sage [2012/01/14(土) 00:24:14.06 ID:???]
>>866
preg_match_all('|<img src="([^"]*)">(?!</a>)|')

869 名前:nobodyさん mailto:sage [2012/01/15(日) 00:11:37.39 ID:???]
>>866
xhtmlが想定できるなら、正規表現よりxpath使った方が良いよ。
php.netにある例を改変すれば、$stringに文書が文字列化されてるとして、

$xml = new SimpleXMLElement($string);
$result = $xml->xpath('//img[name(..)!="a"]/@src');
while(list( , $node) = each($result)) {
    echo $node,"\n";
}

この場合だと親要素がaではないimg要素のsrc属性ってことが
直接表現できるからね。


870 名前:nobodyさん mailto:sage [2012/02/04(土) 12:29:11.76 ID:???]
こちらのスレッドにはじめて投降します。よろしくお願いします。
・使用言語:java
・質問内容:漢字を余すことなく拾いたい。
※漢字を拾い出す正規表現をネットで調べていたのですが、
なにが新しくて、なにが不十分で、なにが正解なのかわからなくなってしまいました。




871 名前:nobodyさん mailto:sage [2012/02/04(土) 18:34:56.81 ID:???]
漢字以外



872 名前:nobodyさん mailto:sage [2012/02/04(土) 20:48:16.26 ID:???]
[\p{InCJKUnifiedIdeographs}
こういうのをみつけたのですが、これで網羅されているのでしょうか。

873 名前:nobodyさん mailto:sage [2012/02/05(日) 12:00:52.66 ID:???]
code.cside.com/3rdpage/jp/utf-8/indexEastAsian.html
ここらを見て漢字の含まれているグループを加えたらいいんじゃないかしら。拾っては困る文字があるなら
拾いたい漢字のコードポイントを列挙するしかないんじゃないかしら

「ああもう面倒 ! Unicodeに含まれる日本語で使われている漢字だけを拾う正規表現をここに書いてくんろ !」って
ことなら答えてもらえないと思うぞw

874 名前:nobodyさん mailto:sage [2012/02/05(日) 13:17:26.57 ID:???]
>>873
面倒。。。という意味ではなく、漢字を含む文章を取り上げる正規表現を探していたのですが、
調べれば調べるほど種類があり、何を明記すれば過不足なく満足な結果を得られるのか分からなくなったので
質問した次第です。


875 名前:nobodyさん mailto:sage [2012/02/05(日) 13:35:14.15 ID:???]
>>870
JIS X 0208またはJIS X 0213準拠の漢字コードでいいんじゃない?
JIS X 0208準拠なら charset.7jp.net/unicode2.html にあったよ。

876 名前:nobodyさん mailto:sage [2012/02/05(日) 17:49:14.26 ID:???]
>>875
ありがとうございます。[亜-腕弌-熙]に加えて[\-K]もあるようですが、
\p{InCJKUnifiedIdeographs} または[一-龠]とは比べて量が異なるのか否か
使ってはいけないのかどうなのか、教えていただけると嬉しいです。

ちなみにwindows7、Microsoft(R) Office IME 2007 辞書ツール を使っています。

877 名前:nobodyさん mailto:sage [2012/02/05(日) 19:33:01.78 ID:???]
>>876
コード表から検索すればすぐわかると思うんだけど…。
"一" で検索すれば 4e00 にあり、"龠" で検索すれば 9fa0 にあることがわかる。
\p{InCJKUnifiedIdeographs} は実装に依存するからJavaの仕様書を読んで、としか。
使ってはいけない、なんて判断指標もなしに判断できるわけがない。

878 名前:nobodyさん mailto:sage [2012/02/05(日) 19:41:04.69 ID:???]
"JavaTM Platform Standard Ed. 6" には \p{InCJKUnifiedIdeographs} がないね。
java.sun.com/javase/ja/6/docs/ja/api/java/util/regex/Pattern.html

879 名前:nobodyさん mailto:sage [2012/02/05(日) 20:32:59.67 ID:???]
>>877>>878
返答、誠にありがとうございました。
自分の出した結論としては、\p{InCJKUnifiedIdeographs}がクラス Patternにはないこと、
亜は4E9C、Kは9ED1にあり、一と龠の位置よりも狭いことから(並びの順序が違うので一概には言えませんが)、
[一-龠]を使うのが一番妥当と判断しました。

皆様、本当にありがとうございました。


880 名前:nobodyさん mailto:sage [2012/02/17(金) 21:31:06.69 ID:???]
質問です。ABCDEと5つの文字があり、複数の文中・文末に点在しています。

文中・文末にあるABCDEをマッチさせる正規表現を教えてください。
文頭はのぞきたいです。
ネットで調べたりしたのですが、どの言葉を用いると自分の要求する答えが
見つかるのか分からなかったので書き込みしました。
また自分で調べるためにも自己解決できるようなHPを教えていただけると嬉しいです。

よろしくお願いします。
JAVAを用いています。

881 名前:nobodyさん mailto:sage [2012/02/18(土) 01:29:01.30 ID:???]
>>880
文頭は ^ か \n
マルチラインモードで動作しているかによって変わる



882 名前:nobodyさん mailto:sage [2012/02/18(土) 07:45:28.55 ID:???]
>>881
マルチラインモードONだと思います。
それぞれの文章ごとに適用したいと思っています。

追記なのですが、
ABCDEが含まれていない文章も除きたいと考えています。
よろしくお願いします。

883 名前:nobodyさん mailto:sage [2012/02/18(土) 10:11:57.59 ID:???]
>>882
もう答えは出ていると思うんだが…。
否定先読みと ^ を組み合わせればいい。
URLは>>878

884 名前:nobodyさん mailto:sage [2012/02/18(土) 10:58:37.64 ID:???]
>>883
ありがとうございました。

885 名前:nobodyさん mailto:sage [2012/02/22(水) 10:20:21.24 ID:???]
質問です。javaをしようしています。
ひらがな・カタカナ・アルファベット・記号で、連続ではない必ずまじりあった4文字以上の文章
を抜き出す正規表現を教えて頂けないでしょうか。よろしくお願いします。

886 名前:nobodyさん mailto:sage [2012/02/22(水) 22:58:11.24 ID:???]
連続ではないまじりあった状態がどういうことなんだろう。
その4種を用いていればまじりあいそうな。
あアs# はどうなの。

887 名前:nobodyさん mailto:sage [2012/02/22(水) 23:26:26.77 ID:???]
>>886
連続ではない必ず混じりあった4文字以上の文章とは
「ああああ」「アアアア」「aaaa」「◎◎◎◎」等連続した文章ではなく
「あアアa」とか「aaaの」とか「◎あアア」等の文章のことです。

分かりづらくすいません。


888 名前:nobodyさん mailto:sage [2012/02/22(水) 23:50:16.43 ID:???]
>>887
それだけじゃ分かりにくい
例えば「アあアa」はどうなんの?

889 名前:nobodyさん mailto:sage [2012/02/22(水) 23:59:54.01 ID:???]
>>888
「ひらがなだけ」「カタカナだけ」「アルファベットだけ」「記号だけ」の文章ではないのでマッチします。
「あいうえお」はひらがなが連続しているのでマッチしないようにお願いします。

890 名前:nobodyさん mailto:sage [2012/02/23(木) 00:39:32.26 ID:???]
>>889
こんな感じ?

^(?:[a-zA-Zぁ-ゞァ-ヾ、-◯].{4,}|[a-zA-Zぁ-ゞァ-ヾ].{4,}|[a-zA-Zぁ-ゞ].{4,}|[ぁ-ゞァ-ヾ、-◯].{4,}|[ぁ-ゞァ-ヾ].{4,}|[ァ-ヾ、-◯].{4,})$

891 名前:nobodyさん mailto:sage [2012/02/23(木) 00:45:45.26 ID:???]
>>890
表現していただき、本当にありがとうございました。
さっそく活用したいと思います。感謝します。



892 名前:nobodyさん mailto:sage [2012/02/23(木) 01:57:09.70 ID:???]
>>891
ごめん890は流してくれ
なんか頓珍漢なこと書いてたわ

893 名前:nobodyさん mailto:sage [2012/02/23(木) 02:20:18.23 ID:???]
>>892
いえいえ、謝られることなんて。

894 名前:nobodyさん mailto:sage [2012/02/23(木) 09:38:55.66 ID:???]
1つの文字種だけでないならどこかに異なる2つの文字種が並ぶところがある筈
なので、あとは4文字以上の条件を満たすにはその並ぶところの前に2文字以上
あるか、前と後ろに1文字以上ずつあるか、後ろに2文字以上あるかのいずれか
である。

文字クラスをいちいち書くのはだるいのであ,ア,a,○で代表させると

[あアa○]{2,}あア[あアa○]*

みたいのを真ん中の文字種の順列×前と後ろの繰り返し数のパターン分だけ
つくって|で並べればOK


895 名前:nobodyさん mailto:sage [2012/02/23(木) 10:34:55.79 ID:???]
>>894
「[あアa○]{2,}あア[あアa○]*」の真ん中の「あア」の部分を
「あア」「あa」「あ○」「アあ」「アa」「ア○」「aあ」「aア」「a○」
「○あ」「○ア」「○a」の12通り作って|で並べると解釈しましたがよろしかったでしょうか。

制作本当にありがとうございました。



896 名前:nobodyさん mailto:sage [2012/02/23(木) 12:00:24.74 ID:???]
さらに前後の繰り返し数の場合わけで

[あアa○]{2,}あア[あアa○]*
[あアa○]{1,}あア[あアa○]{1,}
[あアa○]*あア[あアa○]{2,}


も必要だから12×3=36通り作って並べる


897 名前:nobodyさん mailto:sage [2012/02/23(木) 12:03:30.20 ID:???]
真ん中だけ違うんだから

[あアa○]{2,}(あア|あa|….)[あアa○]*
[あアa○]{1,}(あア|あa|….)[あアa○]{1,}
[あアa○]*(あア|あa|….)[あアa○]{2,}

とした方が楽だな

898 名前:nobodyさん mailto:sage [2012/02/23(木) 14:37:23.71 ID:???]
>>896>>897さま
追加補足ありがとうございます!

899 名前:nobodyさん mailto:sage [2012/02/23(木) 17:00:23.37 ID:???]
PHP:5.3です。
URLの置換の質問です。
(preg_replace()でやるつもり)

ttp://aa.com/index.php?(適当な文字列) 複数あり

ttp://aa.com/index.html
のようにしたいのですが、どのような正規表現を使ったらいいでしょうか?


よろしくお願いします。



900 名前:nobodyさん mailto:sage [2012/02/23(木) 21:26:51.99 ID:???]
>>899
検索対象
index\.php[\?]+.+$
置換文字列
index.html

URLに含まれるphpファイルが複数存在する場合、GET変数(?以降の文字列)を強制的に除去したい場合
ただし、文中のあらゆる「?」から始まる単語が検索対象となってしまう。
検索対象
[\?]+.+$
置換文字列
index.html


901 名前:nobodyさん mailto:sage [2012/02/26(日) 21:16:58.77 ID:???]
javascriptです。
検索文字列が"manga_index[0-9]+\.html"と"manga_ban_index[0-9]+\.html"
(例:manga_index52342.htmlとmanga_ban_index2.htmlでヒット)

manga_index[0-9]+\.htmlの場合はmanga_ban_index[0-9]+\.htmlとban_を追加し
manga_ban_index[0-9]+\.htmlの場合はmanga_ban_index[0-9]+\.htmlとそのままにしたいのですがどうすればいいのでしょうか?



902 名前:nobodyさん mailto:sage [2012/02/27(月) 16:13:34.47 ID:???]
manga_index を manga_ban_index に置換すればいいんじゃないの

903 名前:nobodyさん mailto:sage [2012/02/29(水) 06:23:11.44 ID:???]
使用言語問わず(?:foo|bar)と(foo|bar)の違いが判りません
自分が読むスクリプト言語の参考書では特に注釈もなしにfooかbarかどちらかに当てはまるものは(?:foo|bar)と書かれますが
初心者向けの正規表現についてのサンプルなど見ると(foo|bar)が多い気がします

どういう違いなのでしょう?初歩的な質問ですがよろしくお願いします

904 名前:nobodyさん mailto:sage [2012/02/29(水) 14:42:57.64 ID:???]
>>903
()で囲むとあとから\1などで参照できます。
(?:)とするとその参照を切ることができます。
()でグループ分けをしたいけど参照はしない、というときにその設定をすると無駄がなくなります。

905 名前:nobodyさん mailto:sage [2012/03/01(木) 17:23:10.26 ID:???]
>>904
今までよくわからないで()を使っていたので
これからはもっと良いものが書けそうです、ありがとうございます

906 名前:nobodyさん mailto:sage [2012/03/05(月) 00:36:21.70 ID:???]
phpの正規表現で、特殊文字、こんなの→(?????)を区別したいんですが、どうすればよいでしょうか。
ざっくりした質問ですので、参考になるサイトを教えてくださる程度でも構いません。

907 名前:906 mailto:sage [2012/03/05(月) 00:47:40.35 ID:???]
文字化けしてますね。すみません。
特殊文字というのは、ミリとかリットルとか、特殊顔文字(読み方がわかりません。ハートとか。)で使われるものです。

908 名前:nobodyさん mailto:sage [2012/03/05(月) 01:55:25.02 ID:???]
>>906
UTF-8で

909 名前:nobodyさん mailto:sage [2012/03/05(月) 09:22:56.91 ID:???]
全部並べて文字クラスにすりゃいいだろ。正規表現以前の問題だな。


910 名前:nobodyさん mailto:sage [2012/03/10(土) 02:43:47.72 ID:???]
479 名前:nobodyさん[] 投稿日:2012/03/10(土) 02:34:43.14 ID:/aJUja8G
文字列の正規表現で
「数値と英語と . と / と hoge 以外にマッチ」
というのをやりたいのですがどうも失敗してしまいます。一発での解決方法とかあるのでしょうか?

\Dやったあとまた\Wでマッチング、その後ドットでマッチングと物凄く効率悪い方法しか思いつかなかったのですが


911 名前:nobodyさん mailto:sage [2012/03/10(土) 02:56:04.76 ID:???]
裏を返せば「数値か英語か . か / か hoge にマッチ」 したらnotマッチ



912 名前:nobodyさん mailto:sage [2012/03/10(土) 03:17:32.46 ID:???]
>>911
貼ったの自分じゃないですがありがとうございます!
そういう考え方でいけばいいんですね

913 名前:nobodyさん [2012/03/20(火) 19:40:54.01 ID:Z+BjIxhL]
javaの表現方法で
Bがあれば削除、ただし直前がAなら削除しない、かつB単体でも削除
という表現方法はありますか?
^[A]Bだと全体で2文字あることが前提のように解釈していますが間違っていますでしょうか。

914 名前:nobodyさん mailto:sage [2012/03/20(火) 19:59:11.06 ID:???]
>>913
[^A]?Bかな

915 名前:nobodyさん [2012/03/20(火) 20:10:18.04 ID:Z+BjIxhL]
>>914
マッチしました。ありがとうございます。

916 名前:nobodyさん mailto:sage [2012/03/21(水) 02:09:27.32 ID:???]
[^A]

少し横向きの人が答えてるようで和んだ

917 名前:nobodyさん mailto:sage [2012/03/21(水) 12:29:51.49 ID:???]
ああ、なるほど。と思ったけど ?があるから「はあ?」って言われてるとこ想像してしまい凹んだ

[^A]?

918 名前:nobodyさん mailto:sage [2012/03/26(月) 23:29:49.84 ID:???]
「あいうえお」のいずれかが3回以上連続したらマッチってどうやればいいんでしょう?
[あいうえお]{3,}だと「あいう」とかにもマッチしちゃって駄目だった。

919 名前:nobodyさん mailto:sage [2012/03/26(月) 23:37:31.05 ID:???]
>>918
([あいうえお])\1{2,}

920 名前:nobodyさん mailto:sage [2012/03/26(月) 23:41:15.88 ID:???]
>>919
ありがとうございます!
解決してすっきりしました。

921 名前:nobodyさん mailto:sage [2012/03/28(水) 18:04:07.49 ID:???]
すいません・・・。
>>913->>917の件にて、結果的にどのように表現すればよい結論になったのでしょうか。




922 名前:nobodyさん mailto:sage [2012/03/28(水) 18:26:58.68 ID:???]
>>914だろ

923 名前:nobodyさん mailto:sage [2012/03/28(水) 18:57:52.69 ID:???]
>>921
>>916>>917は顔文字みたいって言ってるだけやんw






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

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

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