5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

正規表現 Part7

1 :デフォルトの名無しさん:2010/03/19(金) 15:16:48
正規表現(Regular Expression)スレです。

質問する場合は実装言語や処理系ソフトウェア名を示しておくと話が早いです。

【 前スレ 】 正規表現 Part6
http://pc12.2ch.net/test/read.cgi/tech/1241537764/

2 :デフォルトの名無しさん:2010/03/19(金) 15:18:08
◆関連サイト
正規表現メモ
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/

3 :デフォルトの名無しさん:2010/03/19(金) 15:19:04
◆関連スレ
[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/

4 :デフォルトの名無しさん:2010/03/19(金) 15:25:47
スルーされにくい質問のテンプレと例

●正規表現の使用環境
Java1.5

●検索か置換か?
検索

●説明
各行の1番目のAまでを検索したい

●対象データ
ABCA
BCAA
CABA

●希望する結果
ABCA
^
BCAA
^^^
CABA
^^

5 :デフォルトの名無しさん:2010/03/19(金) 21:49:45
>>1

6 :デフォルトの名無しさん:2010/03/20(土) 01:07:35
>>1

7 :デフォルトの名無しさん:2010/03/20(土) 11:52:09
>>1

8 :デフォルトの名無しさん:2010/03/20(土) 13:34:45
>>1
カツカレー

9 :デフォルトの名無しさん:2010/03/21(日) 22:59:00
googleのRE2ってどうなの?

10 :デフォルトの名無しさん:2010/03/22(月) 09:31:52
速いと思うけど、大きい正規表現に長い文字列を食わせるときじゃないとあまり違い分からないかも

11 :デフォルトの名無しさん:2010/03/22(月) 10:36:03
/   //   /   //    ______     /   //   /
 / //   /|   r'7\ ,.ヘ‐'"´iヾ、/\ニ''ー- 、.,   /    /
  /   / |  |::|ァ'⌒',ヽ:::ヽrヘ_,,.!-‐-'、二7-ァ'´|、__
`'ー-‐''"   ヽ、_'´  `| |:::::|'"       二.,_> ,.へ_
         /  //__// / / /      `ヽ7::/
 か っ も  |  / // メ,/_,,. /./ /|   i   Y   //
 ァ  て う.  |'´/ ∠. -‐'ァ'"´'`iヽ.// メ、,_ハ  ,  |〉
  |  約 ク  ヽ! O .|/。〈ハ、 rリ '´   ,ァ=;、`| ,ハ |、  /
  |  束 ソ   >  o  ゜,,´ ̄   .  ト i 〉.レ'i iヽ|ヽ、.,____
  |  し  ス  /   ハ | u   ,.--- 、  `' ゜o O/、.,___,,..-‐'"´
  |  た  レ  |  /  ハ,   /    〉 "从  ヽ!  /
  |  じ  は  |,.イ,.!-‐'-'、,ヘ. !、_   _,/ ,.イヘ. `  ヽ.
 ッ .ゃ .立   |/     ヽ!7>rァ''7´| / ',  〉`ヽ〉
 ! ! な  て   .',      `Y_,/、レ'ヘ/レ'  レ'
   い  .な    ヽ、_     !:::::ハiヽ.   //   /
   で   い   ./‐r'、.,_,.イ\/_」ヽ ',       /  /
   す      /    `/:::::::/ /,」:::iン、 /    /
          〈  ,,..-‐''"´ ̄ ̄77ー--、_\.,__  /
      ,.:'⌒ヽ ´         | |  , i |ノ   `ヾr-、


12 :デフォルトの名無しさん:2010/03/22(月) 23:24:39
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━-┓
┃ ┌────────────────────────ーーー┐ ┃
┃ │            / ̄ ̄\                      │ ┃
┃ │          /  ヽ_  .\                    │ ┃
┃ │          ( ●)( ●)  |     ____            │ ┃
┃ │          (__人__)      |     /      \          .| ┃
┃ │          l` ⌒´    |  / ─    ─   \       │ ┃
┃ │         . {         |/  (●)  ( ●)  \      .| ┃
┃ │           {       / |      (__人__)      |     │ ┃
┃ │      ,-、   ヽ     ノ、\    ` ⌒´     ,/__      .| ┃
┃ │     / ノ/ ̄/ ` ー ─ '/><  ` ー─ ' ┌、 ヽ  ヽ、   │ ┃
┃ │    /  L_         ̄  /           _l__( { r-、 .ト、 . │ ┃
┃ │       _,,二)     /            〔― ‐} Ll  | l) ).│ ┃
┃ │       >_,フ      /               }二 コ\  Li‐' .| ┃
┃ │    __,,,i‐ノ     l              └―イ   ヽ |   . | ┃
┃ │                l                   i   ヽl   . | ┃
┃ └ーーー────────────────────────┘ ┃
┗-━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
            平成22年3月22日 クソスレにて


13 :デフォルトの名無しさん:2010/03/23(火) 00:04:21
>>12

        / /      '" /    / ,,-、 /、ヽ\  ゙i;,-''"   / ./  /─''''" ̄ ,,/
        /  ./ /   ,,,-‐'"-/   / ./ ゙" "\  ゙i;,  | 、// /   "    ,,,/
       / ,-''/ /    ,,-''"_ /   //       ヽ  l /  レ'/~       /‐/
      / /  | l|  ,,-'"/゙/,」|    /    ..::;;;,,,  }  /   |~ ,,-‐,,,-'''  //~
     / /-'''''| | /l /‐'''/'' .人   i'    .:: :;'" / / l  ノ゙i// ,,-‐'"──==
     //'"   ゙i;: | /‐' ./,, ,,ノ ゙i;,.  |     _,,-ヾ.// ノ ,-''" l |  ‐'"   ,,,-‐二
     レ'     ヽl:i' ./  )'、‐,\゙i;: | ,,,-‐二-┬ナ" /‐'"‐ 〉 ,i'───'''" ̄~-''"
         ,-‐',ヽ|'"  ./゙ヽ-ゝ='\゙i,'''ヽ -゙=‐'   '" ,‐'ノ,, /‐''" ,,-‐'''"~
        / / ;;:.  ──ヽ, ゙i;'''''' , ゙ "-‐'''''"""    〔_,/ ゙ヽ'-'"~
       / /   / ,; ,,_}_  ゙、 ./__,,  _,,       /      \    
      ,;'  / ,;;;:;:/;: ,,   ~ ヽ ヽ.  ヽニ‐'、     / /       ゙i,_ おめぇ、ここ大丈夫か?
    ./        ''  ,l,,,,,,/ 〉  ゙ヽ、 ''''    ,,-''" /        ゙i.\
    /          / ヽ /     ゙ヽ、--イ~;;:'" //   ::;:;:;:   | \
   i          /  ̄ ゙̄"          |;:" //            ヽ-‐'''"~l|
  ./    ゙''''ヽ、,,-‐''"              .i /,;'"   _,,,,,,,,,_,,,-‐'''-''"~     |
 (" ̄"'''''‐--、,,_i'                 // '",,-─'''"  ,,,-‐'",-‐'"  ,,,,-‐ .___|
 i' ゙'':::::::::::::::::::::::}




14 :デフォルトの名無しさん:2010/03/24(水) 10:40:44
WzやMIFESの置換で、行頭から何文字かを削除する正規表現を教えてください。

15 :デフォルトの名無しさん:2010/03/24(水) 12:06:37
>>14
WzやMIFESが正規表現を使えるかどうか知らんが、削除したい文字数が判っているなら"^..."などでできるだろ。

16 :14:2010/03/24(水) 19:29:29
できました。...が字数なんですね。ありがとうございます。
無知な私にはネットで調べても不明でした。

17 :デフォルトの名無しさん:2010/03/24(水) 22:58:06
全然わかってないんだなw
わからんなら正規表現なんて使わなきゃいいのに

18 :デフォルトの名無しさん:2010/03/25(木) 00:14:41
俺も最初はこんなもんだったが?

19 :デフォルトの名無しさん:2010/03/25(木) 00:22:06
>>17
ご自分は"えきすぱあと"なおつもりでいらっしゃるようにお見受けしますが、
全員えきすぱあと な訳がないし、
別にいいじゃねぇか、そういうスレなんだし。



20 :デフォルトの名無しさん:2010/03/25(木) 00:23:41
           ∩_
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ <こいつ最高にアホ
 彡、   |∪|  /
/ __  ヽノ /
(___)   /


21 :デフォルトの名無しさん:2010/03/25(木) 00:31:06
>>17は生後すぐに言葉を発し「我は神なり」と言って自分で産湯に浸かったそうだ。
産湯でサッパリした彼はおもむろにビールを飲み干しPCに向かい正規表現を操っていた。

そんな夢のような夢を見たのだろうw

22 :デフォルトの名無しさん:2010/03/25(木) 00:38:08
でも小学生のころの俺でもなんとなく使いこなしてたんだから、ぐぐって理解できないってのはなんかおかしいだろう

23 :デフォルトの名無しさん:2010/03/25(木) 00:59:21
>>22
>でも小学生のころの俺でもなんとなく使いこなしてたんだから
性器表現の話はスレ違い

24 :デフォルトの名無しさん:2010/03/25(木) 01:13:03
それ面白い?

25 :デフォルトの名無しさん:2010/03/25(木) 01:17:14
うん

26 :デフォルトの名無しさん:2010/03/25(木) 01:21:00
>>24
お前のツッコミがつまらなさすぎる件
NSCで修行してこい


27 :デフォルトの名無しさん:2010/03/25(木) 01:29:46
それ面白い?

28 :デフォルトの名無しさん:2010/03/25(木) 01:33:28
うん

29 :デフォルトの名無しさん:2010/03/25(木) 01:42:45
不満しか口から出ない子は視野が極端に狭いんだよ。
こういう>>17のような子は

友達が出来ない > 社会生活が送れない > ゲームに耽る > 更に孤立する > 常に不満を抱える

家族すら見放しているので誰も注意しない、本人にも自覚が無いから抜け出せない。
唯一の捌け口が2chで暴言を吐くこと。

30 :17:2010/03/25(木) 02:04:40
ファビョっちゃったかwww
本当に調べて、調べた上で全く判らなかったっていうなら、
正規表現に手を出すには時期尚早じゃね?って親切心だったんだけどな。

31 :デフォルトの名無しさん:2010/03/25(木) 02:07:33
絶望的ですね

32 :デフォルトの名無しさん:2010/03/25(木) 02:41:07
>>30
恐ろしい程の馬鹿だなお前w

33 :デフォルトの名無しさん:2010/03/25(木) 16:52:35
              い   フ
          鮮  い   ァ
         人  じ   ビ
      に . だ.  ゃ   っ
      だ . も  な   て
      を . の  い . も
      圖     か

          .∧_∧
         ∩#`Д´>'')
         ヽ    ノ

34 :デフォルトの名無しさん:2010/03/25(木) 16:57:42
正規表現を高速に調べたいデス。こつをおしえてください

35 :デフォルトの名無しさん:2010/03/25(木) 17:10:59
これをブックマーク
http://www.google.com/search?num=100&lr=lang_ja&q=%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE

36 :デフォルトの名無しさん:2010/03/25(木) 17:30:02

     _ _, ,_
  (  ´)`Д) )) < ハァハァ こんな所でダメェ
  /  つ つ  < 大丈夫だって,こんな糞スレ誰も来ねえよ
(( (_(_  ノ ノ
  し∪ ∪
     _, ,_  _, ,_
 Σ( ゚д゚ )゚д゚)
  /  つ つ
  (_(_  ノ ノ
  し∪ ∪
    _, ,_  _, ,_
  ( ゚д゚ )゚д゚)
  /  つ つ
(( (_(_  ノ ノ
  し∪ ∪


37 :デフォルトの名無しさん:2010/03/26(金) 12:08:13
つかここム板なんだし基本的な調査能力は大前提でないかえ?

テンプレの初心者用正規表現サイトで演算子一覧見てたら質問するまでもない
自分で理解する気ゼロでそのままズバリの解答だけ欲しいってのが丸見え
「行頭から何文字かを削除する正規表現」で検索してもそりゃ出てこないだろうよ

38 :デフォルトの名無しさん:2010/03/26(金) 12:10:59
まだやってるのか>17

39 :デフォルトの名無しさん:2010/03/26(金) 16:24:11
>>37
    /: : /:: : : / : : : !:: : : : !: : !: : : ヽ:: : : : : ',
   /: : /: : : 斗--、 :|: : : : :|: : | ,ィT: ',: : :ヽ : !
   |: : |: : : : : |: /  \: : /|:.ィ: :ヽ: : :.|.: : : ト、:|
   |: : |: : : : /!/ ⌒ヽ| :/ |:./⌒ヽV: |.: : : | V
  < : _: : : / 〈  {} |/  レ  {} }|:./ヽ: : |
  <:: |. 小{   _,,.. -    、-.,_  レ{: :.|ヽ:|    / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
   厶ヘ ハ         、     {ハ/ V   | いい加減にしてくれよっ!
      \_!      _ '     !         | 正直言って気持ち悪い!!
        ヽ    /   `t   /      <
      ___,r| \  {    / /         \____________
    /:/::::| \  ヽ `_⌒ ィ ´            (⌒)
  /::::::/::::::|  \   ´ ∧>、         ノ ~.レ-r┐、
/:::::::::::/::::::::|    \  /  !\::`ー- 、  ノ__  | .| | |




40 :デフォルトの名無しさん:2010/03/26(金) 16:36:51
    ,.-'"   `'''-、
  /          ヽ
  /             l
  | ヽ         / |
 rl  〉 __    ___ 〈 /-,
 |゙i| <.(・)` i '´(・)>  .!/il
 ヽl     ..:|     |_ノ
   l   /ヽ___ハ    l
   ヽ ヽ ー==‐ ' / /
  _/| ヾ、     /|ヽ、
 ::::::l   ` --- '  l:::::::::ヽ、__

クソスレア・ゲルナー[xoslair Gellner]
(1914〜1989 イギリス)


41 :デフォルトの名無しさん:2010/03/26(金) 17:28:35
.netのregexです(prel5互換?)

Controlという文字をReplaceしたいのですがControlsを除外したい場合どのように書けばいいのでしょうか?

42 :デフォルトの名無しさん:2010/03/26(金) 17:34:42
>>37
気に入らないor答えられないならスルーしておけ。
おれみたいにな。

43 :デフォルトの名無しさん:2010/03/26(金) 17:44:52
/Control(?!s)/
.netはずいぶん使ってないから間違ってるかも

でもそのレベルなら
・"Control"の出現位置を調べて次の文字が"s"以外なら部分上書きする
・/Control(s)?/でマッチをかけてコールバック内で$1を元に条件分岐
みたいな地道で理解しやすいアプローチをお勧めする

44 :デフォルトの名無しさん:2010/03/26(金) 20:28:56
>>43
ありがとうございます。
できました。

45 :デフォルトの名無しさん:2010/03/26(金) 20:30:33
リテラルでいいんですかね?
""で囲まれた文字などをヒットさせたいんですが

(")([.\/a-zA-Z0-9]+)(")

とかやってみたのですがかかってくれません

あとコメントやリテラルの中に日本語があった場合はどうかければいいんでしょうか?

46 :デフォルトの名無しさん:2010/03/26(金) 20:36:31
"[^"]*"

47 :デフォルトの名無しさん:2010/03/26(金) 20:39:09
>>46
ありがとうございます

48 :デフォルトの名無しさん:2010/03/26(金) 20:46:20
ちょっと待て。
言語が何か知らんけど、ダブルクォートがエスケープされて入ってるとかは考えなくて良いのか?


49 :デフォルトの名無しさん:2010/03/26(金) 20:55:44
も、申し訳ございませんでした ><

"(?:[^"\\]|\\.)*"

50 :デフォルトの名無しさん:2010/03/26(金) 20:58:32
>>48
基本的な書き方できればそこからなんとか^^

51 :デフォルトの名無しさん:2010/03/26(金) 21:45:26
ソースをネットに公開するのにIDE上の色分けするのって面倒ですね・・・

52 :デフォルトの名無しさん:2010/03/26(金) 22:03:33
>>51
codepadとかvcviewとかgoogle codeとか

53 :デフォルトの名無しさん:2010/03/26(金) 22:06:41
vcviewじゃなくてviewvcだった
CVS and Subviersion viewer

54 :デフォルトの名無しさん:2010/03/26(金) 22:10:30
Ideone.com | Online IDE & Debugging Tool
ttp://ideone.com/



55 :51:2010/03/26(金) 23:18:47
結構いろいろあるんですね

google codeはじめ方がわからんw

codepad、Ideone.comは似たようなサービスですよね
C#のコードなので色分けが対応してないのが残念

viewvcはSubviersionの系統ですか

簡単なツール作ったけど結局正規表現のパターンに左右されてしまう・・・

56 :デフォルトの名無しさん:2010/03/27(土) 02:38:13
コードハイライトなんて腐るほどライブラリあるからそれつかえよ

57 :デフォルトの名無しさん:2010/03/27(土) 03:11:11
>>56
コードハイライトっていうのか
http://code.google.com/p/syntaxhighlighter/
いいのがあった
助かりました

58 :デフォルトの名無しさん:2010/03/27(土) 13:01:36


59 :デフォルトの名無しさん:2010/03/29(月) 20:37:33
葡萄
バナナ
apple
これらのどれかが含まれる場合にのみマッチするようにする記述を教えてください

60 :デフォルトの名無しさん:2010/03/29(月) 20:40:20
(葡萄|バナナ|apple)

61 :デフォルトの名無しさん:2010/03/29(月) 21:25:25
>>60がbest answerだな。後は文字コードに注意するだけ。
一応言ってみるけど、果物に分類されるものにマッチすることを望んでいるなら、正規表現以前の問題

62 :デフォルトの名無しさん:2010/03/30(火) 08:49:45
(果物)

63 :デフォルトの名無しさん:2010/03/30(火) 11:26:32
if condition

という行にはマッチするけど、

if condition end
if condition endif

などの行にはマッチしない正規表現を教えてください。
condition のところには任意の文字列がくるとします。

とりあえず、処理系は Perl5.8 で。

if.+(?!end)$

などとしてみたけど、"if condition end" にマッチしてしまう。

64 :デフォルトの名無しさん:2010/03/30(火) 11:44:36
うーむww

これはダサいww

(if )(condition)([ ])([^e][^n][^d])

65 :デフォルトの名無しさん:2010/03/30(火) 12:05:58
いやconditionは任意の文字列らしいよ
end, endifが行末か

66 :デフォルトの名無しさん:2010/03/30(火) 12:12:58
任意がどういう文字がくるかわからんのでとりあえず

(if )([a-zA-Z0-9]+)( )([^e][^n][^d])

67 :デフォルトの名無しさん:2010/03/30(火) 12:33:52
それだと、例えば
if hoge add
がマッチしない

68 :デフォルトの名無しさん:2010/03/30(火) 12:37:18
そういうパターンもあるなら先に言えよ

69 :デフォルトの名無しさん:2010/03/30(火) 12:40:51
>>68
???
マッチしたいものにマッチする、マッチさせたくないものにはマッチしない

が基本だろ。

70 :デフォルトの名無しさん:2010/03/30(火) 12:41:22
(if )([a-zA-Z0-9 ]+)( )([^e][^n][^d])

71 :デフォルトの名無しさん:2010/03/30(火) 12:41:26
>任意の文字列

72 :デフォルトの名無しさん:2010/03/30(火) 12:42:08
>>70
>>67

73 :デフォルトの名無しさん:2010/03/30(火) 12:45:50
http://uproda.2ch-library.com/230999vmx/lib230999.png
するけど

74 :デフォルトの名無しさん:2010/03/30(火) 12:48:07
>>72
スペース入ったの見てる?
2chの文字だけで判断するなよ

75 :デフォルトの名無しさん:2010/03/30(火) 13:00:33
>>63
if.+(?!end)$
これって何でテストしてみたの?
perl5互換の.netの正規表現だとif hoge addしかかからないぞ

76 :デフォルトの名無しさん:2010/03/30(火) 13:23:14
/.+/が末尾までマッチするから無理だろ
perl5.8って戻り読み使えないんだっけ?

あと、「任意の文字列」には空文字列、end、endifも含まれるんだが

○ if endend
○ if hoge end fuga
× if end

でいいんだよな?

77 :デフォルトの名無しさん:2010/03/30(火) 14:02:18
正規表現単独って結構厳しくないか?

(if)(.+)(endif|end)

だときっちりターゲット絞れるからと思って

(if)(.+)(?!end)

こうすると見事に駄目になるしな

プログラム的に

(if)(.+)(endif|end)
これの否定を検索みたいなことができなければ一度でやるのは無理じゃね?

一度抽出して結果を交えてどうにかするならいけそうだが

78 :デフォルトの名無しさん:2010/03/30(火) 14:26:24
>>62
正規表現にポリモフィズムが導入されれば可能になるだろうな

79 :デフォルトの名無しさん:2010/03/30(火) 15:42:19
英数字の単語をマッチさせたいが、すべて大文字のものは除く

○ abc
○ Bbc

× ABC

みたいな正規表現はどうなりますか?


80 :デフォルトの名無しさん:2010/03/30(火) 21:15:08
>>63

^if.+(?<!\send)(?<!\sendif)$

>>79

(?=.*[a-z])[A-Za-z]+


81 :デフォルトの名無しさん:2010/03/30(火) 21:57:29
>>63
^if .*(?<! end(if)?)$

>>80 1つ目
それだと、ifhoge とかもマッチしちゃう

82 :デフォルトの名無しさん:2010/03/30(火) 22:00:21
まだやってんのかw
完璧な正解求めて時間浪費しすぎだろ

end endif含めたパターン抽出して結果からend endif含むところだけリプレースか何かで
潰しちゃえばすむことなのに

83 :デフォルトの名無しさん:2010/03/30(火) 23:22:21
>>80
回答する側はずいぶんいい加減でもいいんですねw

84 :デフォルトの名無しさん:2010/03/30(火) 23:37:59
質問する側も条件がいい加減なんだからどっちもどっち。

85 :デフォルトの名無しさん:2010/03/31(水) 00:22:23
>>81

それ、Perlじゃ通らん。

Variable length lookbehind not implemented in regex m/^if .*(?<! end(if)?)$/


86 :デフォルトの名無しさん:2010/03/31(水) 00:37:27
^if .*(?<! end)(?<! endif)$


87 :デフォルトの名無しさん:2010/03/31(水) 17:00:25
<h1>hoge</h1>
<div><a:hhh /></div>
<div><b:iii e="foo"/></div>
<h2>bar</h2>
<p><c:jjj>yahoo</c:jjj></p>


これで
<a:hhh />
<b:iii e="foo"/>
<c:jjj>yahoo</c:jjj>

この部分を取得したいのですがよろしくお願いします。
共通事項としては、<A:B>の形式で、タグ形式で終了します。

88 :87:2010/03/31(水) 17:01:33
Perl互換でお願いします。

89 :デフォルトの名無しさん:2010/03/31(水) 17:37:57
>>87
<b:iii e="</b:iii></b:iii></b:iii>"/>
<c:jjj>yah<c:jjj>oo</c:jjj></c:jjj>
というのもアリ?


90 :87:2010/03/31(水) 17:42:29
>>89
レスありがとうございます。
ネストは全く考えていませんでした。
ネストするとかなりややこしくなってしまいますね。
とりあえずなしでお願いします。

91 :デフォルトの名無しさん:2010/03/31(水) 18:43:30
正規表現クックブック
http://www.oreilly.co.jp/books/9784873114507/

出るらしい

92 :デフォルトの名無しさん:2010/04/05(月) 06:31:50
xxyxxyxxy
で'y'を','などのリテラルに置換するのは簡単ですが、
xx,xx,xx,
制御コードに置換するにはどうするのでしょうか。
xx
xx
xx
ソースコード整形でよく使うのでとくにy -> \nとy -> \r\n の置換をお願いします。
当方javaですが他のでも一応理解できます。

93 :デフォルトの名無しさん:2010/04/05(月) 06:59:29
"\n"

94 :デフォルトの名無しさん:2010/04/05(月) 14:31:34
それだと
xxnxxnxxn
になります。replaceでも言語やソフトが制御コードの出力をサポートしていればいいのですが、
ただの"\n"や
\n
\\n
などは'\' 'n' に置き換えられるので他の方法はないでしょうか。

95 :デフォルトの名無しさん:2010/04/05(月) 14:43:26
意味がわからん

96 :デフォルトの名無しさん:2010/04/05(月) 15:26:20
>>94
そんなはずがねえだろかす

97 :デフォルトの名無しさん:2010/04/05(月) 22:41:17
>>94
コードを示んだ。どこか間違えているから。


98 :デフォルトの名無しさん:2010/04/06(火) 02:58:27
xxyxxyxxy なら
replac "xxy", "xx\n" で普通ならマッチの類推で改行するように思いますがnetbeansのエディタだと
xxnxxnxxn なんです。
マッチのときと違い、置換のときの \ はエスケープ機能固定で、'\n'のとき'n'と解釈のようです。
replac "xxy", "xx\\n" なら \ n になり
xx\nxx\nxx\n で一行のままです。そういうアプリ(モジュール)のようです。
他のエディタならエスケープで無く制御コード出力の解釈で改行になるようですけど。
つまり質問のように置換のとき制御コード(0x0Aなど)を出すにはどうすればよいでしょうか。

99 :デフォルトの名無しさん:2010/04/06(火) 08:21:49
Javaの話かと思ったらエディタの置換機能かよ!


100 :デフォルトの名無しさん:2010/04/06(火) 08:57:48
テキストファイルもバイナリエディタでみると16進数の集まりなので
そっちで置換するのもいいかもねw

エスケープシーケンスなんて使わなくても制御コードそのまんまで置換できるし

101 :デフォルトの名無しさん:2010/04/06(火) 09:00:56
というかJava使えるならバイト読みして自分で置換すればいいんじゃないの?

102 :デフォルトの名無しさん:2010/04/06(火) 10:33:04
とすると、置換の場合はアプリの方が制御コード出力をサポートしてないと改行やタブに置換する方法ないのでしょうか?

103 :デフォルトの名無しさん:2010/04/06(火) 16:22:45
当り前だろ

104 :デフォルトの名無しさん:2010/04/08(木) 11:47:36
つ[man tr]

105 :デフォルトの名無しさん:2010/04/09(金) 03:51:09
>>63
戻り読み無しなら
/^if +(?!end)(?!endif)(\w{0,4}|\w{1,2}(?! end)\w{4}|\w+(?! endif)\w\w(?! end)\w{4}) *$/

戻り読みありなら
/^if +\w+(?<! endif)(?<! end) *$/

自分では、なにか抜けがありそうで怖くて使わないだろうけど

エディタで使うとかじゃない限りは
一度にマッチさせようとせず、別条件で除外するのが普通ですよね


106 :デフォルトの名無しさん:2010/04/09(金) 15:44:13
http://coolstuff.jp/regexp/
http://www.mnet.ne.jp/~nakama/
どっちが元祖なんだろう

107 :デフォルトの名無しさん:2010/04/11(日) 22:14:56
先読みの (?!123)\d\d\d と後読みの \d\d\d(?<!123) ってこの場合に限り
意味は同じですよね。

108 :デフォルトの名無しさん:2010/04/12(月) 22:20:16
使用エディタ EmEditerで

ファイルリストから目的の拡張子だけを持つファイル名を抽出したいのですが

例えば
C:\aaaa\bbbb\hogehoge.txt

を抽出するなら [^\\]+(?=\.txt) でいいかと思うんですが、逆に「txt以外のファイル名」としたときに [^\\]+(?!\.txt) では全て選択出来てしまいます。
色々考えた結果

[^\\]+(?=\.(?!txt)) だと目的の動作をすることは分かったのですが、 [^\\]+(?!\.txt) が駄目な理由がいくら考えても分かりません。どなたか解説お願いしたいです。


「¥」を除く1回以上の繰り返しの後ろに「.txt」がつかない場所にマッチする。
まあこれだけだと当然上の例なら「aaaa」や「bbbb」も同じようにマッチするのは分かるんですが「hogehoge.txt」もマッチする理由がさっぱりなのです。
どなたかお願いします

109 :デフォルトの名無しさん:2010/04/12(月) 23:22:44
[^\\]+ が hogehoge.txt にマッチしてるだけでは?

110 :デフォルトの名無しさん:2010/04/12(月) 23:23:15
ちょっと前にまったく同じのがあったぞ

量指定子が全部食い尽くすから、("" != ".txt") は真

111 :デフォルトの名無しさん:2010/04/12(月) 23:41:00
この場合、量指定子は関係ないんじゃないの?

・「C:\aaaa\bbbb\hogehoge.txt」に対して「(?=\.txt)」をマッチさせると e と . の間の一箇所のみがマッチ
 →[^\\]+ を欲張りにマッチさせて「hogehoge」
・「C:\aaaa\bbbb\hogehoge.txt」に対して「(?!\.txt)」をマッチさせると e と . の間以外のすべてがマッチ
 →[^\\]+ を欲張りにマッチさせて「hogehoge.txt」(t と行末の間までマッチ)

ってことじゃないのかな

112 :デフォルトの名無しさん:2010/04/13(火) 15:31:26
うーんやっぱり量指定子が全部食ってるのかな?
けど量指定子が全部食うなら [^\\]+(?=\.txt) でおkな理由もよく分からんし

結局>>111の用に先読みが位置アンカーとしか動作しないことをよく考えるべきなのかなかな?

113 :108=112:2010/04/13(火) 17:34:02
すいません、ちょっと勝手な自分の考察をだだ流しすることになりますけど

[^\\]+(?!\.txt) と (?!\.txt)[^\\]+ は同じ結果になる。
[^\\]+(?=\.txt) と (?=\.txt)[^\\]+ は結果が違う。

やっぱり>>110>>111さんのいうことでOKなんですね。

「C:\aaaa\bbbb\hogehoge.txt」

(?!\.txt)[^\\]+でヒットするのは「.txt」の「.」の前以外の場所全て。その場所を起点として後ろ側で[^\\]+が当てはまる所は全部食う。
[^\\]+(?!\.txt)でも結局「.」の前以外の全ての場所になり、[^\\]+で食うので今回の例の場合は結果が変わらず。

[^\\]+(?=\.txt)なら「.」の前でのみヒットし、その前で[^\\]+も当てはまる所は食う。(?=\.txt)[^\\]+なら後ろ側を食うので結果が違う。

[^\\]+(?=\.(?!txt))
位置検索で「txt」じゃない場所を探す→たくさんのヒットの中から「.」があるところを検索→それより前の部分で[^\\]+ =ファイル名

はあ大分スッキリしました。結局先読みを「^」や「$」と同じように考えればいいんですね、多分
答えくれた方々ありがとやんした!

114 :デフォルトの名無しさん:2010/04/13(火) 19:02:56
>けど量指定子が全部食うなら [^\\]+(?=\.txt) でおkな理由もよく分からんし

おkに決まってるだろ
あほか

115 :デフォルトの名無しさん:2010/04/13(火) 19:09:32
結果が出た後に批判だけするのダサイからやめとけ

116 :デフォルトの名無しさん:2010/04/14(水) 03:15:36
文字コードのエスケープシーケンスについて教えてください。

preg_match("/^[ぁ-ゞ]+$/u",$str)
をUTF-8 コード表記にすると
preg_match("/^(\xe3\x81[\x81-\xbf]|\xe3\x82[\x80-\x9e])+$/",$str)

と、某所にあったのですが、\xe3\x81〜 の意味が判りません

ぁ:0x3041 む:0x3080 ゞ:0x309E は判ったのですが、どういう法則で、\xe3\x81〜となるのでしょうか?

コード表
http://www.unicode.org/charts/PDF/U3040.pdf

117 :デフォルトの名無しさん:2010/04/14(水) 03:28:00
U+3041はUTF-8だと\xe3\x81\x81
U+309EはUTF-8だと\xe3\x82\x9e
UTF-8の3バイトめは\x80-\xbf

118 :デフォルトの名無しさん:2010/04/14(水) 10:08:13
>>113

ゼロ幅表明の場合、カーソルは移動せず、立ち止まってちょっと後ろを振り返って
みたり、先を見渡してみたりして思ったような正規表現になっているかを確認する
作業だったような気がします。

[\\+]+(?=\.txt)
の場合は、「\.txt」の直前までカーソルが移動した状態でtrueとなる。
その後いくらカーソルを先に移動してもこの正規表現がtrueとなることはない。

[\\+]+(?!\.txt)
の場合は、「.txt」の直前までカーソルが移動した状態ではfalseだが、
「\.txt」の\.の直後以降にカーソルが移動した状態ではtrueとなる。

カーソルのイメージができればもっとスッキリできるのでは?



119 :116 :2010/04/14(水) 12:49:27
>>117サン
>U+3041はUTF-8だと\xe3\x81\x81
レスありがとうございます
そういうのって、どういう法則なんでしょうか。
任意の文字の\xnn\xnn\xnn形式に変換するには、どーすれば。。

120 :デフォルトの名無しさん:2010/04/14(水) 23:50:50
>>119
自分で調べようよ…
Googleで「UTF-8 仕様」で検索してみるとかさ。


121 :116 :2010/04/15(木) 14:49:27
判りやすいのがなくって・・(涙
全然、わかんないです。

122 :デフォルトの名無しさん:2010/04/15(木) 14:59:08
UTF-8でぐぐれば上の方にあるだろうウィキペディアのUTF-8の
「エンコード体系」に書いてある内容でわからなければ、そもそも
プログラミングや文字コードの基礎が足りないので勉強しろとしか
いえないな。

123 :デフォルトの名無しさん:2010/04/15(木) 15:08:28
>>121
あんた馬鹿?
「u+3042 e3 81 82 あ」でぐぐって2番目にヒットしたサイトに解説があるんだけど。
曰く、
firstByte = 0xe0 | (ucs2 >> 12);
secondByte = 0x80 | ((ucs2 >> 6) & ((1 << 6) - 1));
thirdByte = 0x80 | (ucs2 & ((1 << 6) - 1));
とあるね。

124 :デフォルトの名無しさん:2010/04/15(木) 15:11:31
>>120
あんた馬鹿?
自分が調べたらええやん


125 :デフォルトの名無しさん:2010/04/15(木) 16:13:52
>>123
あんた馬鹿?

なんで乞食に餌与えるのよ

126 :デフォルトの名無しさん:2010/04/15(木) 16:18:20
>>125
あんた馬鹿?
いつまでスレ違いの話を続けるのよ。

127 :デフォルトの名無しさん:2010/04/15(木) 18:58:09
>>126
あんた馬鹿?
ネタに釣られるなんて

128 :デフォルトの名無しさん:2010/04/16(金) 06:24:26
キモッ

129 :デフォルトの名無しさん:2010/04/16(金) 11:30:52
>>124-127
これをあぼーんするNGEXは

^(あんた)*(馬鹿|バカ)?.+(ええやん)*

130 :デフォルトの名無しさん:2010/04/16(金) 21:36:05
s/(\/\w\w)(\.htm)/$10$2/で、$1の直後に0を付けたいのですがどうも$10と解釈しているようで
うまくいきません。これの回避方法を教えてください。

131 :デフォルトの名無しさん:2010/04/16(金) 21:40:02
>>130
あ〜出来ました。いちど別の文字にしてから0に変えました。

132 :デフォルトの名無しさん:2010/04/16(金) 22:03:22
>>129
それ試してみたんだけど、必ずマッチが成功してしまうのだ。
これじゃあぼーんできないよ。。

133 :デフォルトの名無しさん:2010/04/16(金) 22:30:16
>>132
^[\s ]*<a\shref=.+>>\d.+<br>[\s ](あ[んな]た|おいら)*(馬鹿|バカ)[??]?.+(ええやん)*

134 :デフォルトの名無しさん:2010/04/18(日) 19:49:05
現在地球上で最も優れた正規表現の実装はどこにありますか?

135 :デフォルトの名無しさん:2010/04/18(日) 19:50:39
自前で実装すれば、boostもperlも遅いからな・・・

136 :デフォルトの名無しさん:2010/04/18(日) 20:15:59
鬼車


137 :デフォルトの名無しさん:2010/04/19(月) 18:12:57
>>130
普通に${1}0ってしろよ。

138 :デフォルトの名無しさん:2010/04/26(月) 16:47:51
正規表現クックブックが出たな

139 :デフォルトの名無しさん:2010/04/26(月) 17:52:46
>>137
thx

140 :デフォルトの名無しさん:2010/04/26(月) 18:00:01
なんでこんなにややこしいことになってるの?
もうすこし表現が簡単になればいいのに

便利に使うための記述じゃないの?



141 :デフォルトの名無しさん:2010/04/26(月) 18:37:07
ではあなたの考える分かりやすくて便利な性器表現をここで披露してみてくださいな

142 :デフォルトの名無しさん:2010/04/26(月) 18:40:37
>>141
凹凸 これでいいか

143 :デフォルトの名無しさん:2010/04/26(月) 18:41:11

正規表現で選民意識かよきめえw


144 :デフォルトの名無しさん:2010/04/26(月) 18:47:42
  ♀
 ♂

145 :デフォルトの名無しさん:2010/04/26(月) 19:41:28
>>138
ふくろう本あればもう他はいらなくね?


時々>>140みたいな香具師が開発チームにいて
「正規表現は可読性が落ちるから使うな」とか抜かすが、
そこは「お前の知識が浅いだけじゃん」とCoolに決めて黙らす
相手は団塊爺PGだったりするんだが昔は正規表現嫌われてたのかね

146 :デフォルトの名無しさん:2010/04/26(月) 19:58:40
イット業界
こわいお(;_;)

147 :デフォルトの名無しさん:2010/04/26(月) 20:00:30
当たり前のように使うようになったのは、Unixの文化だねぇ。
Unixへの憧れなしでパソコンユーザーだったおっさんとか、
メインフレーム屋やオフコン屋は拒否反応を示すのかも。

148 :デフォルトの名無しさん:2010/04/26(月) 20:26:07

偉い偉い
その優秀な頭脳でい仕事してくださいね!

149 :デフォルトの名無しさん:2010/04/26(月) 20:36:37
誰に対しての反応なのかわからないよ。
時間的にもおかしくない?

150 :デフォルトの名無しさん:2010/04/26(月) 20:41:27

偉い偉い
その優秀な頭脳でいっぱい仕事してくださいね!


151 :145:2010/04/26(月) 21:08:58
>>147
なるほどねー
パンチカード世代のUNIX系知らない団塊は毛嫌いするって事か
まぁ今更勉強しろとは言わないけど最低限読めるように頑張れよ>>150


152 :デフォルトの名無しさん:2010/04/26(月) 23:51:58

偉い偉い
その優秀な頭脳でいっぱい仕事してくださいね!

153 :デフォルトの名無しさん:2010/04/26(月) 23:53:57
2・3日前くらいからいろんなスレでキチガイを見かけるが同一人物か?

154 :デフォルトの名無しさん:2010/04/27(火) 00:46:11
今時、正規表現のロジックが理解できない奴は新しいコードなんて書けない
既存の古いコードのメンテでもやってればいい

155 :デフォルトの名無しさん:2010/04/27(火) 00:48:52

偉い偉い
その優秀な頭脳で新しいコードいっぱい書いてくださいね!

156 :デフォルトの名無しさん:2010/04/27(火) 01:37:23
否定先読みなんかはどうも感覚と一致しなくてバグが潜んでたりするなぁ

157 :デフォルトの名無しさん:2010/04/27(火) 01:44:59

偉い偉い
その優秀な頭脳でバグのないコードいっぱい書いてくださいね!


158 :デフォルトの名無しさん:2010/04/27(火) 01:45:25
最近いろんなブラウザでJavaScriptのエンジン開発やってるけど
正規表現の後読みが使えるブラウザって存在するの?

どっかのブラウザが対応したらその流れでIE9でも対応しないかなと期待してるんだけど。

159 :デフォルトの名無しさん:2010/04/27(火) 02:07:53
正規表現エンジンは、どのブラウザも全く同じ。
基本的に、コアの実装はIEでさえ標準に準拠してる。
ブラウザ間の差があるのは、「クライアントサイドJavaScript」の部分。


160 :デフォルトの名無しさん:2010/04/27(火) 02:22:28

偉い偉い
その優秀な頭脳で後読みが使えるブラウザを書いてくださいね!

161 :デフォルトの名無しさん:2010/04/27(火) 13:18:15
'20100427' を (\d\d\d\d)(\d\d)(\d\d) でマッチさせると2番目は '04' となります。
このようなときに、先頭の0を取り除いて4を切り出すということは正規表現だけで実現できるでしょうか?


162 :デフォルトの名無しさん:2010/04/27(火) 13:34:06
(\d\d\d\d)0(\d)(\d\d)

163 :デフォルトの名無しさん:2010/04/27(火) 13:42:13
すみません、もちろん仮定は「同時に '20101203' が 2010, 12, 3 と切り出せること」です。


164 :デフォルトの名無しさん:2010/04/27(火) 13:47:59
(\d\d\d\d)0?(\d?\d)0?(\d?\d) だと、
20100403 の時に変なことになるし、
たぶんできない。

165 :デフォルトの名無しさん:2010/04/27(火) 13:55:32
(\d\d\d\d)(?:0|([1-9]))(\d)(?:0|([1-9]))(\d)

と1桁ずつキャプチャしてつなげるとか?

166 :デフォルトの名無しさん:2010/04/27(火) 16:54:53

偉いなあお前らは
俺はワイルドカードも使えないがせいぜい頑張ってな

167 :デフォルトの名無しさん:2010/04/27(火) 17:03:00
単一のキャプチャの(...)でこの2つの場合を区別するのは
ムリだろ。入り口が有限状態オートマトンの1状態にしか
対応させられないから1桁とるべき場合か2桁取るべき場合
かの情報の持ちようがない。

168 :デフォルトの名無しさん:2010/04/27(火) 19:32:05
>>161
(\d{4})0?([1-9]?\d?(?=\d{2}))0?([1-9]?\d?)

169 :デフォルトの名無しさん:2010/04/27(火) 19:33:09
すまん間違えた

(\d{4})0?([1-9]?\d?(?=\d{2}))0?([1-9]?\d?)

170 :168=169:2010/04/27(火) 19:34:30
二重に間違えてるし…吊ってくるorzorz

^(\d{4})0?([1-9]?\d?(?=\d{2}))0?([1-9]?\d?)$

171 :デフォルトの名無しさん:2010/04/27(火) 19:53:14
あー、^はいらないか
後ろが行末じゃない場合にも対応するならこうかな

(\d{4})0?([1-9]?\d?(?=\d{2}))0?([1-9]?\d?)(?!\d)

172 :デフォルトの名無しさん:2010/04/27(火) 20:17:03
正規表現一本でなんでもかんでもやろうとするのって
PerlやRubyで一行野郎と変わらない阿呆だな

173 :デフォルトの名無しさん:2010/04/27(火) 21:01:58

偉いなあお前は
優れたツール使って頑張ってな

174 :デフォルトの名無しさん:2010/04/27(火) 21:33:41
レベル低いな

175 :デフォルトの名無しさん:2010/04/27(火) 22:34:36
>>172
正規表現一本も読めない奴が、このスレで何してんの?

176 :デフォルトの名無しさん:2010/04/27(火) 23:27:25

優秀なんだな君は
俺はワイルドカードも使えないが正規表現で頑張ってね


177 :デフォルトの名無しさん:2010/04/27(火) 23:45:23

a = b
a^2 = ab
a^2 - b^2 = ab - b^2
(a + b)(a - b) = b(a - b)
a + b = b
2b = b
2 = 1

178 :デフォルトの名無しさん:2010/04/28(水) 00:32:33
>>177
なつかしすw

179 :デフォルトの名無しさん:2010/04/28(水) 07:42:31
(a + b)(a - b) = b(a - b)
a + b = b

0でわるな

180 :デフォルトの名無しさん:2010/04/28(水) 08:49:34
>>177
a=42
b=-22のとき

181 :デフォルトの名無しさん:2010/04/28(水) 12:26:37
JavaScriptです

「xxxx=任意&yyyyyyy=任意&zzzzzz=任意」
と言う文字列から任意の値を各々取るにはどうしたらいいでしょうか?
xyzの文字は各々固定で、任意には何文字入るかわかりません
0文字もあります

欲しい結果は3つ
xxxx=任意
yyyyyyy=任意
zzzzzz=任意

182 :181:2010/04/28(水) 13:42:54
自己解決
sage忘れすまん

183 :デフォルトの名無しさん:2010/04/28(水) 15:30:15
教わっといて自己解決かよw

184 :181:2010/04/28(水) 15:46:38
>>183
いや、JavaScriptスレでもマルチしたけど
結局、正規表現ではダメだったのよ

まぁ…すいませんでしたw
勉強します

185 :デフォルトの名無しさん:2010/04/28(水) 21:22:49
●正規表現の使用環境 Perl5
●検索か置換か?  置換
●説明
行の最後が > じゃない行(改行コードだけの行も含む)の
改行コード を 改行コード<br>にしたい
改行コードは \n \r \r\n どれでもできるようにしたい
●対象データ
<p>あいうえお</p>
かきくけこ
<p>たちつてと</p>
●希望する結果
<p>あいうえお</p>
かきくけこ<br>
<p>たちつてと</p>

186 :デフォルトの名無しさん:2010/04/28(水) 23:59:29
頑張ってみたけど、先読みを使うと、\r\nの時に都合が悪くて、
解決方法がわからんかったので置き換えでごり押し。

s/([^>])(\r\n|[\n\r])/$1<br>$2/sg;

改行コードを統一すると、先読みでもう少しスタイリッシュにかけた。

s/(?<!>)(?=\n)/<br>/sg;

何に使うかしらないけど、出力先のOSをみて改行コードを置き換えてもいいと思うんだけど。
サンプルは以下。

my @str = (
"<p>aiueo</p>\nkakikukeko\n<p>sasisuseso</p>\n",
"<p>aiueo</p>\rkakikukeko\r<p>sasisuseso</p>\r",
"<p>aiueo</p>\r\nkakikukeko\r\n<p>sasisuseso</p>\r\n",
);

foreach(@str){
s/([^>])(\r\n|[\n\r])/$1<br>$2/sg;
s/\r\n?/\n/g; # 表示確認のため、改行コードを\nで統一
print;
print "-------------\n";
}


187 :デフォルトの名無しさん:2010/04/29(木) 02:04:27
>>186
ありがとうございます。
これをよく見て勉強します。

188 :デフォルトの名無しさん:2010/04/29(木) 18:11:51
>>187
こういう解法もある

s/(.)(\r\n|\n)/$1 eq '>' ? "$1$2" : "$1<br>$2"/sge;

eオプションが使えると色々応用が効くよ

189 :デフォルトの名無しさん:2010/04/30(金) 00:25:13
Perlならね。

190 :デフォルトの名無しさん:2010/04/30(金) 02:26:32
ありがとうございます。
これをよく見て勉強します。

頑張ってください


191 :デフォルトの名無しさん:2010/04/30(金) 09:40:13
sge-

192 :デフォルトの名無しさん:2010/05/02(日) 09:58:16
適当なフリーのテキストエディタで正規表現を使って以下のような置換を行おうとしたのですが
正規表現には素人なので2つめのパターンをどう表現すればいいのかよく分かりませんでした。
どう書けば上手く置換できるのか教えてください。

1つめのパターン
[[XXXXX]] → {{abc|XXXXX|}} (XXXXXは任意の文字列)
2つめのパターン
[[XXXXX|XXXXX 《YYY》]] → {{abc|XXXXX|def=YYY|}} (置換前の2つのXXXXXは同一の文字列)

例えば
 [[日本]] - [[アメリカ合衆国|アメリカ合衆国 《米国》]] - [[イギリス|イギリス 《英国》]] - [[ドイツ]] - [[フランス]] -
 [[中華人民共和国|中華人民共和国 《中国》]] - [[大韓民国|大韓民国 《韓国》]] - [[グアテマラ|グアテマラ 《グァテマラ/ガテマラ》]] -
 [[朝鮮民主主義人民共和国|朝鮮民主主義人民共和国 《北朝鮮》]] - [[メキシコ]] - [[ギリシャ|ギリシャ 《ギリシア》]]
のようなテキストを、
 {{abc|日本|}} - {{abc|アメリカ合衆国|def=米国|}} - {{abc|イギリス|def=英国|}} - {{abc|ドイツ|}} - {{abc|フランス|}} -
 {{abc|中華人民共和国|def=中国|}} - {{abc|大韓民国|def=中国|}} - {{abc|グアテマラ|def=グァテマラ/ガテマラ|}} -
 {{abc|朝鮮民主主義人民共和国|def=北朝鮮|}} - {{abc|メキシコ|}} - {{abc|ギリシャ|def=ギリシア|}}
のように置換したいのです。

193 :デフォルトの名無しさん:2010/05/02(日) 10:06:13
正規表現 欲張り

194 :デフォルトの名無しさん:2010/05/02(日) 13:36:16
{A},{B}
という文字列に下記正規表現はマッチすると思うのですが
\{(.+)\} *, * \{(.+)\}
マッチしません。どこがまずいのですか?

195 :デフォルトの名無しさん:2010/05/02(日) 13:44:04
\{(.+)\} *, *\{(.+)\}

196 :デフォルトの名無しさん:2010/05/02(日) 13:46:07
>>195
ありがとうございます。
スペースが入っていましたねw
気づきませんでした。

197 :デフォルトの名無しさん:2010/05/02(日) 23:31:14
(V)o¥o(V)

198 :デフォルトの名無しさん:2010/05/03(月) 18:24:33
そりゃ工業高校なんかで最低限の技能をなにか一つ身に付けてる奴なら年齢が最強の武器になるよ
何となく大学院まで行ったような学生よりよっぽど将来有望だ
でも3年間何もせずただ学校に通ってただけってんじゃ駄目だろ
何もしてないどころか勉強ばっかりやって3年間無駄に歳だけ喰って
社会じゃ役に立たない能書きだけ一人前になってたんじゃしょうがないだろ
だから普通科の高卒は中卒以下だって言ってんだよ

199 :デフォルトの名無しさん:2010/05/05(水) 22:01:58
前に、このすれで、()の中身を配列に入れていく正規表現があった。
(())でも、それぞれの中身を入れていく優れものだった。
あれの発展版で、文章(文章2(文章3)文章4)文章5(文章6(文章7)文章8)文章9
のそれぞれの文章を配列に入れれる正規表現はできないものだろうか?

200 :デフォルトの名無しさん:2010/05/05(水) 22:25:37
日本語でおk

201 :デフォルトの名無しさん:2010/05/05(水) 22:34:50
>>199
その正規表現って
((o)(o))ってあってもちゃんと乳首取れる?

ていうか言語クラス違うくね?できるもんなのか。

202 :デフォルトの名無しさん:2010/05/05(水) 22:35:51
近所が自転車盗まれたても、相当離れてるけどジュース置いたら逮捕w
姉はそれでおっぱい触られたって。
これひどくね?友達の姉の実話な。

203 :デフォルトの名無しさん:2010/05/05(水) 22:48:00
入れ子になってても順番にキャプチャできる
123456789 に対して 1(2(3)4)5(6(7)8)9 としたら
キャプチャ結果は 234, 3, 678, 7 になる
>>199が何を求めてるのかいまいちよくわからんが

204 :デフォルトの名無しさん:2010/05/06(木) 08:53:49
>文章(文章2(文章3)文章4)文章5(文章6(文章7)文章8)文章9
がデータだろうから 1(2(3)4)5(6(7)8)9 を与えたら 1, 2, 3, 4, 5, 6, 7, 8, 9 がほしいんだと思うぞ

一方ロシアでは split を使った

205 :デフォルトの名無しさん:2010/05/06(木) 12:35:18
>ていうか言語クラス違うくね?できるもんなのか。
日本語でOK。

206 :デフォルトの名無しさん:2010/05/06(木) 15:17:54
>>205
正規表現であって、文脈自由文法じゃないけどできるものなの?
ってことだよ。俺の理解不足だったらすまないが。

207 :デフォルトの名無しさん:2010/05/06(木) 15:47:52
>>204
たしかにネストなんか気にせずに'('と')'を区切り記号としてsplitするだけでいいな。
さすがロシア。

208 :デフォルトの名無しさん:2010/05/06(木) 17:01:02
確かに、わざわざ正規表現で処理する内容じゃないなw

209 :デフォルトの名無しさん:2010/05/06(木) 17:22:49
さくらエディタを使っていて

CHAPTER01=00:00:00.000
CHAPTER01NAME=第一部 オープニング
CHAPTER02=00:09:13.400
CHAPTER02NAME=オラはにんきもの

こういうのを

TRACK 01 AUDIO
TITLE "第一部 オープニング"
INDEX 01 00:00:00
TRACK 02 AUDIO
TITLE "オラはにんきもの"
INDEX 01 09:13:40

こうしたいんですが、正規表現でできるもんなんでしょうか
できるとしたら答えを貰えるのが一番ですが、どこら辺を調べればいいのかヒントをもらえないでしょうか

210 :デフォルトの名無しさん:2010/05/06(木) 19:01:48
>>209
出来る
サクラエディタの正規表現はperl互換だからperlの正規表現調べればいけると思う

一応、答えると
CHAPTER(\d\d)\=(\d\d\:\d\d\:\d\d)\.\d\d\d\r\nCHAPTER\d\dNAME\=(.*?\r\n)

TRACK $1 AUDIO\r\nTITLE \"$3\"\r\nINDEX 01 $2\r\n
で置換すればいいんじゃないかと思う。
(一番最後のINDEX 01ってのがINDEX 02の間違いなら、置換をINDEX 01からINDEX $1に変えてね)
多分

211 :デフォルトの名無しさん:2010/05/07(金) 00:19:48
>>210
おお!出来ました。ありがとうございます。
正規表現はperlのが使えたんですね。これを機械に勉強してみます。

212 :デフォルトの名無しさん:2010/05/12(水) 03:15:50
php 5.2です。

あるテキストファイル内の文字列から、''や""で囲まれた場所以外の半角スペースとタブを削除したいんですが(preg_replace?)、
どんな感じにすればいいんでしょうか?


213 :デフォルトの名無しさん:2010/05/15(土) 19:34:41
以下のような文章があって、NAME〜からENDまでの間の文字を正規表現で抽出するにはどうすればよいのでしょうか?
NAME〜とENDは含みません。

NAME Haruhi Suzumiya
Haruhi is the title character and leader of the SOS Brigade, whose energetic and
eccentric character proves to be the driving force for the series.
She has a mind for adventure, which often leads her subordinates to be swept into her plans.
END

214 :デフォルトの名無しさん:2010/05/15(土) 19:39:38
>>213
NAME[\s ]?(?.+)\nEND

215 :デフォルトの名無しさん:2010/05/19(水) 07:33:29
いい加減な回答だなw

216 :デフォルトの名無しさん:2010/05/19(水) 22:29:45
正規表現で、"あ(い(う)え(おか)き)くけ" から一番外側の()の中身を取得するにはどうすればよいですか?


217 :デフォルトの名無しさん:2010/05/19(水) 22:33:54
言語による

218 :デフォルトの名無しさん:2010/05/19(水) 22:38:27
\1

219 :デフォルトの名無しさん:2010/05/20(木) 22:14:10
●正規表現の使用環境 Perl5
●検索か置換か? 検索
●説明
りんごにマッチする文字列を検索。
青りんごは対象外としたい。

●対象データ
1,いちご、青りんご、みかん
2,いちご、青りんご、りんご
3,いちご、りんご、みかん

●希望する結果
2と3がマッチ

お願いします


220 :デフォルトの名無しさん:2010/05/21(金) 00:45:52
(?<!青)(りんご)

221 :デフォルトの名無しさん:2010/05/21(金) 01:46:36
>>219
/\bりんご\b/

222 :デフォルトの名無しさん:2010/05/21(金) 02:16:16
>>220
りんごの括弧はいらないだろ。

>>221
蜜りんごは?ねぇ、俺の大好きな蜜りんごは?

223 :デフォルトの名無しさん:2010/05/21(金) 05:39:03
http://www.youtube.com/watch?v=h-mxZ-ijPs8
http://www.youtube.com/watch?v=yWZWWKOp9qU
http://www.youtube.com/watch?v=657bBDalKQo
http://www.youtube.com/watch?v=Fi_YvuAPdNg
http://www.youtube.com/watch?v=zzNZz590adI
http://www.youtube.com/watch?v=U3HqWCALUNs
http://www.youtube.com/watch?v=gUZj2i6U-aw
http://www.youtube.com/watch?v=iq9s9FJMk_c
http://www.youtube.com/watch?v=qTemVhatInQ

224 :デフォルトの名無しさん:2010/05/21(金) 07:53:34
>>220-221
ありがとうございます。


225 :デフォルトの名無しさん:2010/05/21(金) 09:08:55
★青葉りんご彡☆

226 :デフォルトの名無しさん:2010/05/21(金) 19:33:34
Javaで鬼車使うには、ランタイムを再コンパイルするしかないの?


227 :デフォルトの名無しさん:2010/05/22(土) 00:57:13
●正規表現の使用環境
JavaScript2.0? ※Firefox3.5.9+Greasemonkey 0.8.20100408.6+WindowsXP Pro SP3

●検索か置換か?
置換

●説明
( と ) ※括弧と括弧閉じを含む文字列を置換したい。

●対象データ
(Update:2010/01/02)

●希望する結果
(Update:2010/02/03)

続きを書きます。

228 :277:2010/05/22(土) 01:00:01
変数の wordsBrf.push(""); の "" の中に\マークを入れたりせずに、
文字列を置換させたいです。


//文字を置換
var wordsBef = new Array();//置換前
var wordsAft = new Array();//置換後

wordsBrf.push("(Update:2010/01/02)");//置換前
wordsAft.push("(Update:2010/02/03)");//置換後

var body = document.body.innerHTML;
var i = 0;

for (i = 0; i < (words.length); i++) {

var w = new RegExp( words[i], "gi" );
var body = body.replace( w, words[i] );

}

document.body.innerHTML = body;

229 :277:2010/05/22(土) 01:06:01
実際には、Webサイトにある更新日 (Update:2010/04/30) という
文字の色を変えるのに使いたいです。※更新”されていない”ものは赤で表示。

TCP Monitor Plus (OGA'sさんのサイト)
http://hp.vector.co.jp/authors/VA032928/

//バージョン更新チェック
var color = new Array();
var words = new Array();

color.push("#FF0000");

words.push("Ver2.42");//TCP Monitor Plus
words.push("(Update:2010/04/30)");

var body = document.body.innerHTML;
var i = 0;

for (i = 0; i < (words.length); i++) {

var w = new RegExp( words[i], "gi" );
var body = body.replace(w, "<font color='" + color[0] + "'>" + words[i] + "</font>");

}

document.body.innerHTML = body;


どうかよろしくお願いいたします。

230 :277:2010/05/22(土) 01:07:27
説明が下手ですみません。

変数の値に直接エスケープ文字を入れたくないという事です。

よろしくお願いします。

231 :デフォルトの名無しさん:2010/05/22(土) 01:23:34
>>230
本文読んでないけど、メタ文字をエスケープ出来れば済むのならjavascript quotemetaでぐぐるんだ

232 :277:2010/05/22(土) 01:36:41
>>231
(*・∀・)ノこんばんわ。
レスありがとうございます。

quotemetaはPerlでしか使えないのか〜(´・ω・`)と思っていたら、
メタ文字のエスケープ関数のサンプルが載っているサイトがありました。

//追加
function quote(str){
return str.replace(/\W/g, function($0){
return '\\' + $0;
});
};

//変更
var w = new RegExp( quote(words[i]), "gi" );

これで出来ました!
夜遅くにどうもありがとうございました!

233 :デフォルトの名無しさん:2010/05/28(金) 22:43:12
グローバルフラグを付けなくてもいいようなケースにもグローバルフラグを付けた場合
どれだけ無駄になりますか?とてつもなく無駄ですか?微々たるものですか?

234 :デフォルトの名無しさん:2010/05/28(金) 22:52:06
検索対象の文字列長による。
グローバルフラグをつけさえしなければ、
最初のマッチング位置以降の文字列は読み込まないので。

ただし、検索対象の文字列の中にマッチングする対象が無い場合は
グローバルフラグをつけた場合と同じぐらいコストがかさむ。

もう作っちゃったなら、性能問題出てから考えたら。

235 :デフォルトの名無しさん:2010/05/28(金) 22:55:32
>>234
どうもありがとうございます。特に何も感じなかったら気にしないことにします

236 :デフォルトの名無しさん:2010/05/29(土) 02:17:39
●正規表現の使用環境
C# 3.0

●検索か置換か?
検索

●説明
各行の1番目のAまでを検索したい
{ と } に囲まれた文字列を検索したい

●対象データ
Memo[0]{
[Text] 対象データ
}

●希望する結果
[Text] 対象データ


よろしくお願いします

237 :デフォルトの名無しさん:2010/05/30(日) 10:50:00
>>216
亀レスだけど、
\(.*\)
で最長一致検索すれば、一番外側の()である
(い(う)え(おか)き)
にマッチする


ちなみに、\(.*?\)で最短一致検索すれば
"(い(う)"と"(おか)"の2箇所にマッチする

238 :デフォルトの名無しさん:2010/06/01(火) 00:04:43
強欲マッチってどういう時使うの?

239 :デフォルトの名無しさん:2010/06/01(火) 00:13:50
例えば文中の全ての数字の並びを抽出したいときに
/(\d+?)/g
とかやると切ないことになる

240 :デフォルトの名無しさん:2010/06/01(火) 00:29:59
じゃ手放さない(バックトラックしない)強欲マッチは?

241 :デフォルトの名無しさん:2010/06/01(火) 00:43:24
パフォーマンスだろ。

242 :デフォルトの名無しさん:2010/06/01(火) 01:31:28
よくわかりません。

243 :デフォルトの名無しさん:2010/06/01(火) 08:06:13
鬼車の欲張りと強欲の違いがわからない
ttp://www.geocities.jp/kosako3/oniguruma/doc/RE.ja.txt

244 :デフォルトの名無しさん:2010/06/01(火) 12:12:44
手放さない欲張りマッチを使って失敗するような場合はあるんですか?

245 :デフォルトの名無しさん:2010/06/04(金) 10:32:38
javascriptです
aiueo
aiue
iueo
にはマッチするけどiueにはマッチしないってどう書けばいいですか?
/a?iueo?/
だとiueにもマッチしてしまって
/a?iueo|aiueo?/
だと期待通りにはなるのですが
重複する記述があるのでまとめられるならまとめたいです
共通する部分がiueじゃなくてもっと複雑になった場合など

246 :デフォルトの名無しさん:2010/06/04(金) 11:08:31
245
自己レスです
/a?(iue)o|a\1o?/
こうかな・・・

247 :デフォルトの名無しさん:2010/06/04(金) 12:26:17
>>246
僕もそう思った。

248 :デフォルトの名無しさん:2010/06/06(日) 10:57:14
質問です
javascriptです。

IMG00123123.jpgというような文字列が配列に大量にある。
そんな中で、例えばIMG00000012.jpgを検出したい。
そのものずばりで検索すれば、何も問題はないのですが、
不精をして、12だけで、マッチさせたい場合、どう考えればよいでしょう?



249 :デフォルトの名無しさん:2010/06/06(日) 11:13:15
JavaScriptってsprintfないんだな。意外だ

("00000000" + "12").substr("12".length);

250 :デフォルトの名無しさん:2010/06/06(日) 12:06:30
Number("IMG00000012.jpg".match(/\d+/)[0]) == 12

251 :デフォルトの名無しさん:2010/06/06(日) 12:15:14
>>249
ありがとうございます。

後ろから検索する事と、
文字列の長さを利用して、
"00000000"と"12"を分割する、という考え方ですね。

ちょっと検証してみます。

252 :デフォルトの名無しさん:2010/06/06(日) 12:55:22
>>250
あ、ありがとうございます。
現在>>249の考え方で検証中です。。

str:検索対象の文字列(ファイル名)例:IMG012312.jpg
a:検索の為の入力された数値 例:12

c=str.lastIndexOf(a+".")
if(c>-1)
{
d=str.slice(0,c);
e=(d.match(/[1-9]/).length

if(e>0)
{
alert("strは、00000012.jpgではない");
}else{
alert("strは、00000012.jpgだ");
}
おおよそこんな処理になるでしょうか?

253 :デフォルトの名無しさん:2010/06/06(日) 13:06:18
正規表現もだけど、それ以外のところがボロボロだからjsスレ行ってこい

254 :デフォルトの名無しさん:2010/06/06(日) 14:13:08
>>253
エラーだらけですみません。デバッグしてませんでした。
str="IMG001012.jpg ";
a=12;
c=str.lastIndexOf(a+".jpg") ;//後方から"12.jpg"で検索

//引っかかれば、12.jpgの部分がある
//なければ-1が帰ってくる

if(c>-1) {

//検索に引っかかった場合次は、
//文字列strの0番からc-1番までが、
//0以外の文字を含むか検証する必要がある

d=str.slice(0,c); //strの0番からc-1番までを抜出し変数dに代入

//文字列dの中に1から9の任意の値がなければnullが帰ってくる
//strは少なくとも12.jpgではないと言えるので

if((d.match(/[1-9]/g))==null)
{
alert("12.jpgの候補だ");
}else{
alert("12.jpgではない");
}
}
こんな感じで絞り込めました。
後は、imgとかの違いや、0の数での違いをどう処理するかかなと
思いますが、、

255 :デフォルトの名無しさん:2010/06/06(日) 14:18:33
すみません。以下訂正します

誤//strは少なくとも12.jpgではないと言えるので
正//strは少なくとも複数の0と12.jpgからなる文字列だといえるので

256 :デフォルトの名無しさん:2010/06/06(日) 15:07:04
>>250
n=Number("IMG00000012.jpg".match(/\d+/)[0]);
alert(n);
で検証しました。確かに12ですね。
\d+:任意の数値の1回以上の表現
これで、00000012が配列として抽出される
で、問題は[0]ですが、
これは、もしかして配列の0番ということですか?
こんな使い方が出来るとは知りませんでした。

この手法だと、直接値を比較できますね。
ありがとうございました!!

257 :デフォルトの名無しさん:2010/06/06(日) 15:50:34
リファレンス嫁

https://developer.mozilla.org/ja/Core_JavaScript_1.5_Reference/Global_Objects/String/match
>正規表現が g フラグを含んでいない場合、regexp.exec(string) と同じ結果を返します。
https://developer.mozilla.org/ja/Core_JavaScript_1.5_Reference/Global_Objects/RegExp/exec
>[0] 最後にマッチした文字

配列じゃなくてプロパティ
厳密には配列もプロパティの集まり
つーかjsスレ(ry

258 :デフォルトの名無しさん:2010/06/06(日) 16:42:14
>>257
すみませんでした(平謝り)
上記リファレンス、頭から読み直します。
ありがとうございました。

259 :デフォルトの名無しさん:2010/06/11(金) 23:05:13
質問させてください。
●正規表現の使用環境 - Mery(エディタ、鬼車ライブラリ)
●説明 - 連続する同じ内容の2行にマッチ、3行以上の部分にはマッチさせない
●対象データ
ABCD
ABCD
EFGH
EFGH
EFGH

●希望する結果
ABCDの2行のみマッチ、EFGHの2行のところ(2箇所)はスルーして欲しい。
---
否定先読みと否定戻り読みを同時に使ってみたところ、
たぶん否定戻り読みの\1の参照が変なため上手くいきませんでした。こんな感じ。
(?<!\1)(^.+\n)\1\1(?!\1)

260 :259:2010/06/11(金) 23:08:36
>>259
すみません。例では「\1」が1個多すぎました。
× (?<!\1)(^.+\n)\1\1(?!\1)
○ (?<!\1)(^.+\n)\1(?!\1)

…どっちみちダメな例ですが、いちおう。。

261 :デフォルトの名無しさん:2010/06/12(土) 04:20:30
捕獲集合より前に参照使おうとしてるからダメ。
鬼車では>>259の問題は解けないと思う。

こういう前方からの参照ができる正規表現エンジンってあるの?

262 :デフォルトの名無しさん:2010/06/12(土) 10:25:24
マッチ部分が必要な2行のみにしたいのなら難しい(というかできるか
どうか俺もわからん)けど、そういう行を抽出したいだけなら前の1行も
マッチさせてしまえばいいんじゃね?

$str = <<__STR__;
ABCD
ABCD
EFGH
EFGH
EFGH
__STR__

$re = qr{
(?:
¥A
|
(^.+¥n)
(?!¥1)
)
(
(^.+¥n)
¥3
)
(?!¥3)
}xsm;

while ($str =~ /$re/g) {
print "<<<¥n$2>>>¥n"
}


263 :259:2010/06/12(土) 13:32:11
>>262
どうもありがとう! それで上手くいきました。

が、便乗ですみませんが、よろしければもう1つ質問させてもらえますか。
>>262の非捕獲式集合 "(?:)" を消そうと思うと上手くいきません。

"(?:)" を"()" に変え、 後方参照が1つ増えたので、"\3" を "\4" に変えると
同じものになるはずだと思うのですが。。

○ (?:\A|(^.+\n)(?!\1))((^.+\n)\3)(?!\3)
×  (\A|(^.+\n)(?!\1))((^.+\n)\4)(?!\4)

264 :259:2010/06/12(土) 13:43:31
>>263
cf.
無理矢理ほんの少しだけ見やすくしてみました。

○ --- (?: \A|(^.+\n)(?!\1) )  ( (^.+\n)\3 ) (?!\3)
× ---  ( \A|(^.+\n)(?!\1) )  ( (^.+\n)\4 ) (?!\4)

265 :デフォルトの名無しさん:2010/06/12(土) 14:03:18
( \A|(^.+\n)(?!\2) )  ( (^.+\n)\4 ) (?!\4)

266 :259:2010/06/12(土) 14:50:02
>>265
!!!!!!
!!!!!!

…かなり長時間悩んでいたので、信じられないくらいすっきりした。
ありがとう。

267 :デフォルトの名無しさん:2010/06/13(日) 09:25:15
((^.+¥n)¥2)(?<!^¥2¥2¥2)(?!¥2)

というのを試してみたら可変長戻り読みでエラーになっちゃった。
これ戻り読みするときには¥2は確定してるんだからなんとかならん
のかなぁ。

268 :デフォルトの名無しさん:2010/06/17(木) 03:14:38
まぁまぁ初心者なんだが、
/aaa/ ・ /aaa bbb/ と2回やるのと、/aaa( bbb)[0,1]/ とまとめるのでは、
一般的に言ってどっちが速い・軽い・負担少ないの?
対象データとの兼ね合いもあるだろうが、どっちの方が好ましいの?

269 :デフォルトの名無しさん:2010/06/17(木) 03:18:12
後者じゃないの。
10万回くらい回すテストプログラム作ってみたらいいと思う。

あと、/aaa( bbb)[0,1]/じゃなくて/aaa( bbb){0,1}/ね。
もっと言うと/aaa( bbb)?/の方が簡潔。

270 :デフォルトの名無しさん:2010/06/17(木) 03:19:36
訂正
×: /aaa( bbb)[0,1]/
○: /aaa( bbb){0,1}/

271 :デフォルトの名無しさん:2010/06/17(木) 03:21:17
おっとすれ違った。ありがとう

>/aaa( bbb)?/
なるほど!

272 :デフォルトの名無しさん:2010/06/19(土) 15:08:05
perlスクリプト中に含まれる

use utf8;
use encoding "cp932";
use encoding 'euc-jp';
use   encoding   "iso-8859-2";

などの文にマッチして、「utf8」「cp932」「euc-jp」「iso-8859-2」の部分のみ取り出したいのですが
一発でできる方法があったら教えてください。

273 :デフォルトの名無しさん:2010/06/19(土) 15:11:49
248です。先日はありがとうございました。
アルファベット+数値.jpgのパターンはうまく認識するコードができました。
ただ新たな問題も発生しました。以下のようなパターンです。
日本語の文字化けと、スペースがあるパターンでは、数値を正確に拾えませ
んでした。

画像_000012.pg
%E7%94%BB%E5%83%8F_000012.jpg

画像 000012.jpg
%E7%94%BB%E5%83%8F%20000012.jpg

画像 000012.jpg
%E7%94%BB%E5%83%8F%E3%80%80000012.jpg
文字化け部分を無視して、数字の部分だけを検出する方法を得たいのですが
どうしたらよいでしょうか?

日本語とスペースの部分は(%..)*と、まとめられますが
これを除いた数値部分\d+だけをマッチの対象としたい場合
以下の表現でよいでしょうか?

(?:(%..)*)\d+


274 :デフォルトの名無しさん:2010/06/19(土) 15:19:55
>>272
| を使えばまあ1つにはできるだろうけど

275 :デフォルトの名無しさん:2010/06/19(土) 21:03:30
>>272
^use\s+(encoding\s+)(?(1)["']|)(.*?)\2;$

こうですか?分かりません><

276 :デフォルトの名無しさん:2010/06/23(水) 05:14:30
●正規表現の使用環境
秀丸 または AHK

●検索か置換か?
検索 / grep

●説明
テキストファイルを複数キーワードで検索したい
(通常のウェブ検索のようなものを正規表現で行いたい)

●対象データ
text1 [tag1][tag2]
text2 [tag2][tag1]
text3 [tag2]
text4 [tag3][tag1]
text5 [tag3]
text5 [tag1][tag3][tag2]

●希望する結果
[tag1] および [tag2] で検索した場合、以下がヒット

text1 [tag1][tag2]
text2 [tag2][tag1]
text5 [tag1][tag3][tag2]

277 :276:2010/06/23(水) 05:15:20
どなたか >>276 についてアドバイスをいただけないでしょうか。
宜しくおねがいいたします。

278 :デフォルトの名無しさん:2010/06/23(水) 09:06:03
\[tag(1|2)\]

279 :デフォルトの名無しさん:2010/06/23(水) 09:50:32
[tag1] と [tag2] 両方含む行を拾いたいんじゃまいか

>>276
(?=.*\[tag1\])(?=.*\[tag2\])
ただ秀丸の正規表現が先読みに対応してないと動かない

280 :デフォルトの名無しさん:2010/06/25(金) 00:09:27
>>279
ありがとうございます。試してみたところ、秀丸では動きませんでした。
先読みには対応しているようなので、何か別の工夫がいるのかもしれません。
秀丸スレで質問してみます。

281 : ◆/91kCCQXBo :2010/06/25(金) 00:53:42
((.*tag2.*)(.*tag1.*))|((.*tag1.*)(.*tag2.*))

282 :デフォルトの名無しさん:2010/06/25(金) 17:47:50
>>280
(?=.*\[tag1\])(?=.*\[tag2\])
でも
^(?=.*\[tag1\])(?=.*\[tag2\])
で動いたぞ。ただ、実際に0文字にマッチしているので、
範囲としては見えない。分かりやすいのがよければこれだな:
^(?=.*\[tag1\])(?=.*\[tag2\]).*

283 :デフォルトの名無しさん:2010/06/27(日) 22:26:13
●正規表現の使用環境
VBScript

●検索か置換か?
置換

●全角英数字を全て半角英数字にしたい
1文字1文字Case文でそれぞれを置換するしか方法ないですかね?

284 :デフォルトの名無しさん:2010/06/28(月) 18:11:55
正規表現じゃ無理。StrConvでググリなさい。

285 :デフォルトの名無しさん:2010/06/28(月) 18:17:06
ていうかマルチポストしてんならそう書きなさい。
あと死んでください。

Excel VBA 質問スレ Part15
http://pc12.2ch.net/test/read.cgi/tech/1271261239/692

286 :デフォルトの名無しさん:2010/06/29(火) 19:29:23
●正規表現の使用環境
Perl

●検索か置換か?
置換

●説明
文章の全部のurlを下記のように”&”のあとを削除したい

●対象データ
ttp:\\www.example.com\c?ro=1&act=rss&output=no
......

●希望する結果
ttp:\\www.example.com\c?ro=1
......

287 :デフォルトの名無しさん:2010/06/29(火) 20:53:29
/&.*//

288 :デフォルトの名無しさん:2010/06/29(火) 21:04:22
一行にURLだけしか入ってなければそれでもいいのだが

289 :デフォルトの名無しさん:2010/06/30(水) 12:21:22
秀丸エディタとかでちょっと正規表現使った置換とかしたい時に
\fで区切ってたんだけど、要素が10以上になるとうまく指定できない……

290 :デフォルトの名無しさん:2010/07/01(木) 18:35:23
自己解決

291 :デフォルトの名無しさん:2010/07/04(日) 23:25:25
●正規表現の使用環境
JavaScript

●検索か置換か?
置換

●説明
「サーバー」を「サーバ」に置換したい
「サーバーサイド」「サーバー設定」は除外したい

●対象データ
つまりサーバーのあれこれ
しかしサーバーサイドのなんたら
なお、サーバー設定は云々

●希望する結果
つまり、サーバのあれこれ
しかしサーバーサイドのなんたら
なお、サーバー設定は云々


292 :デフォルトの名無しさん:2010/07/04(日) 23:59:32
サイドと設定以外のサーバーを全部サーバにするってことかな?

.replace(/サーバー(?!(サイド|設定))/g,"サーバ")

293 :デフォルトの名無しさん:2010/07/05(月) 08:15:02
>>292
そうです。ありがとうございました!

梟で勉強します!

294 :デフォルトの名無しさん:2010/07/05(月) 14:04:37
梟より最近出た料理本の方があんたのような人間には良いんじゃないか。

295 :デフォルトの名無しさん:2010/07/05(月) 15:59:11

こういう皮肉を言う人間にはなりたくないな。

296 :デフォルトの名無しさん:2010/07/05(月) 16:37:34
どこが皮肉なんだろ?
おれも >>291 にはクックブックの方がいいと思うけど。

297 :デフォルトの名無しさん:2010/07/05(月) 18:12:56
>>1は料理本が出る前のテンプレだよなあ。
このスレの質問は、初心者ばかりだから、梟じゃわけわからんことが多いだろう。

298 :293:2010/07/05(月) 19:29:54
おっしゃる通り、初心者です
梟本は持ってるんですが、確かに難解で中々身についてる感じがしないです
専門書と言うか辞書を読んでる感覚で頭で分かったつもりになるだけと言うか…

料理本、よろしければURLか正式タイトル教えて頂けませんか?



299 :デフォルトの名無しさん:2010/07/05(月) 20:09:02
正規表現クックブック
http://www.oreilly.co.jp/books/9784873114507/

いろんな実例が載ってるから便利でいいと思うよ。

300 :298:2010/07/05(月) 20:53:05
>>299
買いました!
これのが易しそうですね
ありがとうございます

皆さんはハンドブックやクイックリファレンスみたいなの持ってますか?

301 :デフォルトの名無しさん:2010/07/05(月) 22:33:53
持っていない。
料理本も他人に推奨しながらまだ買ってないし、梟も2版だけどね。

3版で2版にない良いところがあったら教えてほしいとこr。

302 :デフォルトの名無しさん:2010/07/05(月) 22:37:51
フクロウ本で否定の先読みが出てくるのって2章じゃないか
難解とかいう以前に読んでないんだろう

303 :デフォルトの名無しさん:2010/07/06(火) 23:49:53
質問です
●正規表現の使用環境
JavaScript

●検索か置換か?
置換

●説明
「チョコレート」を「チョコ」に置換したいです
でも「板チョコレート」「バレンタインチョコレート」はヒット(置換)させたくないです

●対象データ
やはり板チョコレートよりも
バレンタインチョコレートよりも
自分で買うチョコレート!

●希望する結果
やはり板チョコレートよりも
バレンタインチョコレートよりも
自分で買うチョコ!


(!(バレンタインチョコレート|板チョコレート)チョコレート),チョコ/g
…ダメです。やっぱ難しいです。

304 :デフォルトの名無しさん:2010/07/07(水) 00:04:27
(?<!板)(?<!バレンタイン)チョコレート

305 :276:2010/07/07(水) 00:36:58
久しぶりに戻ってきて、続きのコメントがあったことに気付きました。
>>282 さんがおっしゃる通りでした。0 文字マッチで動いてたんですね。
結局最後のものを使わせていただきました。
ありがとうございました。

306 :303:2010/07/07(水) 12:28:01
>>304
上手くいきません
「<」って、どう言う意味なんですか?



307 :デフォルトの名無しさん:2010/07/07(水) 13:14:47
この先生き残る、の逆verかw

308 :デフォルトの名無しさん:2010/07/07(水) 14:08:25
>>306
JavaScriptは戻り読み使えないのか。ごめん
(?<!...) で否定の戻り読み。「左に"板"も"バレンタイン"もない"チョコレート"」って意味

これならどうだろ

var s = "やはり板チョコレートよりも\nバレンタインチョコレートよりも\n自分で買うチョコレート!";
s..replace(/(板|バレンタイン)?チョコレート/g, function(str, p0){ return p0 ? str : 'チョコ'});

https://developer.mozilla.org/ja/Core_JavaScript_1.5_Guide/Regular_Expressions
https://developer.mozilla.org/ja/Core_JavaScript_1.5_Reference/Global_Objects/String/replace

309 :デフォルトの名無しさん:2010/07/07(水) 17:39:20
行頭のひとつ、または連続するスペースの
それぞれひとつひとつを全て検索対象にする
(連続したものをひとまとまりとして扱うのではなく。そして文中のスペースは対象にしない)
には、どう書けばいいですか?

310 :デフォルトの名無しさん:2010/07/07(水) 18:33:14
自己解決しました

311 :デフォルトの名無しさん:2010/07/07(水) 18:46:20
どんな風に解決したか書いてくれよ。

312 :309:2010/07/07(水) 19:30:22
>>310は自分じゃないけど
でも実際自己解決しました
解決って、その通りのことができたわけじゃないんだけど
やろうとした目的は果たせたんで、おkとします

>>310さん、せっかくすばらしい人間性を披露してくださったのに
あなたがワクワク期待してたような反応してあげられなくて、ごめんなさい

313 :デフォルトの名無しさん:2010/07/07(水) 19:34:21
つか報告だけなら来なくていいよ。

314 :デフォルトの名無しさん:2010/07/08(木) 09:42:56
>>308
動かないっす(;´Д`)
ブラウザはFF

JavaScriptに限らずVBscriptでも動けばいいと思ったんですが
厳しそうですね…

これって、やろうとしてる事は前方参照否定になるんですかね?

315 :デフォルトの名無しさん:2010/07/08(木) 13:16:00
>>314
x s..replace
o s.replace

316 :デフォルトの名無しさん:2010/07/08(木) 17:54:33
●正規表現の使用環境
PHP5

●検索か置換か?
検索

●説明
[[ と ]] に囲まれた文字列を配列で取得したい

●対象データ
[[hare]][[ame]][[kumori]][[yuki]][[]][[kaminari]][[taifuu]]

●希望する結果
matches[0] = hare
matches[1] = ame
matches[2] = kumori
matches[3] = yuki
matches[4] =
matches[5] = kaminari
matches[6] = taifuu

よろしくお願いします。

317 :デフォルトの名無しさん:2010/07/09(金) 07:36:38
最近、正規表現ってことばをよき聞きますが
これってどんな人がどんな時に使うんでしょうか?
ぐぐって調べてもイマイチ意味が分かりませんし
いったいどんな人が使ってるのか疑問です。
自分みたいにパンピーは知らなくても無問題でしょうか?

318 :314:2010/07/09(金) 08:25:23
>>308,315
ありがとう!
でも正規表現だけだと、無理って事?


>>317
君は知る必要ないね
一般事務職でも使うケースはあるけど
ワイルドカードだけ取り敢えず覚えておいては?
と、正規表現初心者の俺が(ry

319 :デフォルトの名無しさん:2010/07/09(金) 10:43:04
MS-DOS時代の人間なんで
ワイルドカード(*、?だけですけど)の使い方は分かってます。

320 :デフォルトの名無しさん:2010/07/09(金) 11:22:26
正規表現を使うソフトと出会ったら勉強すればいい。
出会ってもないのに知る必要はないと思う。

321 :デフォルトの名無しさん:2010/07/09(金) 15:36:10
正規表現とワイルドカードを一緒くたにすると
怖いお兄さん(お姉さんも可)に怒られるからよい子は注意な

322 :デフォルトの名無しさん:2010/07/09(金) 18:26:02
心配するな。
ここで正規表現って騒いでるやつも知らないから。
その証拠にワイルドカードぐらいしか言えないだろ?w

323 :デフォルトの名無しさん:2010/07/09(金) 20:39:02
ドロー4!

324 :名無しさん@そうだ選挙に行こう:2010/07/10(土) 09:01:52
最近、SQLってことばをよき聞きますが
これってどんな人がどんな時に使うんでしょうか?
ぐぐって調べてもイマイチ意味が分かりませんし
いったいどんな人が使ってるのか疑問です。
自分みたいにパンピーは知らなくても無問題でしょうか?

325 :名無しさん@そうだ選挙に行こう:2010/07/10(土) 09:03:32
最近、HTMLってことばをよき聞きますが
これってどんな人がどんな時に使うんでしょうか?
ぐぐって調べてもイマイチ意味が分かりませんし
いったいどんな人が使ってるのか疑問です。
自分みたいにパンピーは知らなくても無問題でしょうか?

326 :名無しさん@そうだ選挙に行こう:2010/07/10(土) 18:51:05
最近、クラウドコンピューティングってことばをよき聞きますが
これってどんな人がどんな時に使うんでしょうか?
ぐぐって調べてもイマイチ意味が分かりませんし
いったいどんな人が使ってるのか疑問です。
自分みたいに頭がクラウドな香具師は知らなくても無問題でしょうか?

327 :名無しさん@そうだ選挙に行こう:2010/07/10(土) 20:53:00
企業がマスゴミをだますときに使う

っつーかスレ違い

328 :名無しさん@そうだ選挙に行こう:2010/07/10(土) 21:49:10
正規表現を導入することでミッション クリティカルなシステムから
モバイル アプリケーションまで対応できる高い信頼性を備えた
アプリケーションを構築することができます。
正規表現で企業内に存在する多数のデータを統合し、全社員がデータを活用できる
ビジネス インテリジェンス基盤として堅牢で実績のあるハイパーバイザーを構築し
不要なリスクやオーバヘッドを回避できます。
正規表現の仮想インフラストラクチャ機構にはデータを安定して管理するさまざまな機能はもちろん、
データを活用・分析する機能まで、すべての機能がオールインワンで備わっているます。
高いスケーラビリティとバランスのとれたトータルクオリティーを活用することにより
あなたの快適ライフをサポートします。

329 :名無しさん@そうだ選挙に行こう:2010/07/10(土) 21:58:55
OBICの中の人乙

330 :名無しさん@そうだ選挙に行こう:2010/07/11(日) 09:29:54
>>328
ユーのランゲージはファンタスティックね

331 :名無しさん@そうだ選挙に行こう:2010/07/11(日) 10:15:52
ルー柴乙

332 :デフォルトの名無しさん:2010/07/14(水) 22:16:49
●環境
vb.net

●したいこと
3文字以上の繰り返し表現を抽出

●サンプル
例文1)死にたい死にたい死にたい死にたい死にたい
結果1)死にたい

例文2)筋肉バスターと阿修羅バスター
結果2)バスター


ってのを正規表現でやるのは無理でしょうか・・・

333 :デフォルトの名無しさん:2010/07/15(木) 00:06:01
例文3) 阿修羅像と筋肉バスターと阿修羅バスターとジェットコースター

こういうときはどういう結果になって欲しいの
処理系側に頼るにしてもあんまりロジック考えたくない

334 :デフォルトの名無しさん:2010/07/15(木) 00:54:48
>>332
英語ならともかく日本語じゃ無理じゃないか
形態素解析 単語 頻度 なんかでぐぐるといいかも

335 :デフォルトの名無しさん:2010/07/15(木) 03:49:25
>>333
>  阿修羅像と筋肉バスターと阿修羅バスターとジェットコースター

「阿修羅」
「バスターと」
じゃね?

336 :デフォルトの名無しさん:2010/07/15(木) 04:52:36
部屋とYシャツと私

337 :デフォルトの名無しさん:2010/07/15(木) 07:44:51
ヘアとワイセツとタワシ

338 :デフォルトの名無しさん:2010/07/15(木) 08:16:33
女子高生と機関銃と私

339 :デフォルトの名無しさん:2010/07/15(木) 09:16:17
中国と韓国と北朝鮮

340 :デフォルトの名無しさん:2010/07/17(土) 10:14:07
>>316
phpならsplit("\]\]\[\[", str)で配列に分割して
最初と最後の要素から"[["と"]]"を取り除いた方が早いんじゃない?
正規表現にこだわる理由は何だろう

>>339
処理結果:特定アジア

341 :デフォルトの名無しさん:2010/07/17(土) 10:53:38
'[[hoge]] fuga [[piyo]]' みたいな入力に弱いのと直感的じゃないからじゃまいか
できれば「文字列を左から走査していき「[[ と ]] に囲まれた文字列」を
すべて拾い上げる」ように書きたいところ

というわけで preg_match_all に "\[\[(.*?)\]\]" を渡すとかどうだろ
PHP知らないんで適当だが

342 :デフォルトの名無しさん:2010/07/17(土) 12:05:18
>316です。
ありがとうございます。
実際には
[[hoge]]今日は[[fuga]]いい[[tenk]]天気です
みたいに間に文字は入るので、正規表現でしか出来ない(効率の面で)と判断しました。
この中のhoge、fuga、tenkiのみを配列の中に入れたかったのです。
結局preg_match_allで "/\[{2}[0-9A-Za-z]*\]{2}/"とする事で解決しました。

343 :デフォルトの名無しさん:2010/07/18(日) 02:24:03
>>335
「スター」は抽出しないのか?

344 :デフォルトの名無しさん:2010/07/18(日) 02:30:15
>>343
それを抽出するなら「スターと」「ターと」も必要じゃないか?

345 :デフォルトの名無しさん:2010/07/18(日) 02:38:40
ちゃんと作ったらもっと色々でてきそうだなw

346 :デフォルトの名無しさん:2010/07/26(月) 18:08:06
/**
 コメント
**/
// コメント

上記のコメント箇所で、コメント内の各一文字を「_」に置き換える方法はあるでしょうか?
コメント行を削除せずに、一度コメントを省いてからソース検索をしたいと思っておりまして。

____↓
_____↓
____↓
_______↓

347 :デフォルトの名無しさん:2010/07/26(月) 18:12:00
/\/[\/*].+(\n|*\/)/_/s

348 :デフォルトの名無しさん:2010/07/26(月) 18:15:53
実際のプログラムだと運がよければできるぐらいだな。
コメントかどうか判断がつきにくい文字列リテラルとか
あるんで病的なケースに完全に対応するのは難しい。
多少誤爆があってよければ適当にやりゃできるだろ。

正規表現といっても使い方はエディタや言語によって
違うので何を使ってやりたいかを決めてそっちのスレで
聞いたほうがいいかも。

349 :デフォルトの名無しさん:2010/07/26(月) 18:16:18
>>346
while ((c=getchar()) != EOF) {
if (c == '/') {
c = getchar();
if (c == '/') {
putchar('_');putchar('_');
while (c=getchar()) != '\n') putchar('_');
} else if (c == '*') {
LOOP:
putchar('_');putchar('_');
while (c=getchar()) != '*') putchar('_');
if ((c=getchar()) != '/') goto LOOP;
putchar('_');
}
}
putchar(c);
}

350 :デフォルトの名無しさん:2010/07/26(月) 19:09:53
>>349
ありがとうございます。
正規表現だけではできないですかね…

351 :デフォルトの名無しさん:2010/07/26(月) 19:15:36
正規表現ってマッチするだけだからねー。

352 :デフォルトの名無しさん:2010/07/27(火) 10:00:25
>>351
あ、すみません。
正規表現とリプレイスの組み合わせでできないですかね?

以前どこかのサイトで見かけたことがあったのですが、
場所忘れ&これを実現した正規表現だったか覚えていなくて…

353 :デフォルトの名無しさん:2010/07/27(火) 11:45:54
>>347
これだと1コメントで「_」になってしまいます。
コメントが10文字ある場合は「_」も10個ほしいです。
先読み、戻り読みを駆使してうまくやっていたような気がしたんですが、
すみません、思い出せないです。

354 :デフォルトの名無しさん:2010/07/27(火) 12:01:28
PHPならpreg_replaceとかあるが・・・。

355 :デフォルトの名無しさん:2010/07/27(火) 12:09:56
検索にひっかからなくするという目的なら1文字になっちゃってもいいと
思うんだけどね。不必要に問題を複雑にしてるような。

356 :デフォルトの名無しさん:2010/07/27(火) 14:23:36
(//|\G).+?(?=.*$)でうまくいくと思ったがちょっとおかしい

a // b  で
a ____   になると思ったが
______   になってしまう

なぜ\Gが行頭に引っかかるのだ!
ちなみにjavaです

357 :デフォルトの名無しさん:2010/07/27(火) 19:15:52
いや \G は文字列先頭にもマッチするもんだろう。

358 :デフォルトの名無しさん:2010/08/02(月) 11:52:25
>>346
「コメントを省いてからソース検索」するのが目的なのに
「コメントが10文字ある場合は「_」も10個ほしい」理由がわからない
他に目的があるのなら全部書き出して最終的に何がしたいか明示すべき

359 :デフォルトの名無しさん:2010/08/02(月) 13:23:24
>>358
そうですねf^^;

やりたいことはソース中の文字列で日本語コメントを抽出です。
その際、検索結果の行番号を元のソースに合わせたいです。
複数行コメントをカットしてしまうとずれが生じるので、全てスペース(改行は変換せず)を考えています。

かなり前にこのスレッドで答えをもらったと思うのですが、それを忘れてしまいまして

360 :デフォルトの名無しさん:2010/08/02(月) 17:24:38
>>359
> その際、検索結果の行番号を元のソースに合わせたいです。

「コメントが10文字ある場合は「_」も10個ほしい」理由がわからない

361 :デフォルトの名無しさん:2010/08/03(火) 15:50:50
仕様がわからない状態でコーディングはできない

362 :デフォルトの名無しさん:2010/08/03(火) 17:33:47
自分が何をしたいのか、を他人にうまく伝えられない人

363 :デフォルトの名無しさん:2010/08/03(火) 17:40:10
>「コメントが10文字ある場合は「_」も10個ほしい」理由がわからない
わからんのなら、おとなしくすっこんでろよw
仕様は>>346で明確に示してあるだろ。これ読んでもわからんの?
わかる人が答える。わからない人は指をくわえて黙って見ている。
これが掲示板の作法だろ。

364 :デフォルトの名無しさん:2010/08/03(火) 17:45:16
>>346だけ読んで理由がわかったらエスパーすぎる

行番号を維持するだけでなく桁数/文字数も維持したいのだろう

365 :デフォルトの名無しさん:2010/08/03(火) 20:10:42
エスパーも何も、これ以上わかりやすい説明は無いと思うが

366 :デフォルトの名無しさん:2010/08/03(火) 20:47:16
せめて文字列リテラル中にコメントと紛らわしい文字列は
ないぐらいは仮定しないととんでもなく難しい気がするな。

あとこういうのを間違わずにやろうとすると結構大変。

// hogehoge /* hogehoge
/* hogehoge
// hogehoge */ hogehoge

367 :デフォルトの名無しさん:2010/08/04(水) 07:41:17
>>362
むしろ自分が何をしたいのかさえ自分で理解できていないレベル

368 :デフォルトの名無しさん:2010/08/04(水) 07:48:43
>>366
コメントについてはネストしたものを正規表現だけで取り扱うのは不可能と
「詳説 正規表現」に書いてあるけどな
その例はネストしていないけど

369 :デフォルトの名無しさん:2010/08/04(水) 11:49:47
>>368
そんなもん複数行モードで(/\*.*?\*/|//.*$)だろ…
ここで質問した俺が馬鹿だった
それじゃ一生答えが導けないよ

370 :デフォルトの名無しさん:2010/08/04(水) 11:56:56
/* ここからコメント /* ネスト */ ここもコメント */

こういうのをなんとかするのは普通の正規表現の範囲では無理。

371 :デフォルトの名無しさん:2010/08/04(水) 12:02:01
文字列中に改行があってもマッチさせることは正規表現で可能でしょうか?

例えば something を検索したいとすると
some\nthing、so\nmething, someth\ning などもマッチした、と判定したいんです。

今はこんな感じで処理しています。
「改行の位置を記憶→改行を全削除→文字列のマッチ→改行をもう一度挿入」
これが正規表現でできると楽になるので方法がわかる方いたらどうか教えてください。

使っている言語はJAVAですが、
他の言語の正規表現でもできるかどうか教えてもらえると助かります。


372 :デフォルトの名無しさん:2010/08/04(水) 12:38:56
>>369
それで適当な固定文字列に置き換えるだけなら簡単なんだけど
文字数を保存して間を_にしたいとかいうから面倒なわけです。

perlならeval使えるから加工するプログラム書けば一発ですが、ただの
エディタの置換機能だとそうもいかん場合も多いんじゃねーの? 何を
使ってるのかも示されてないのでなんともいえんけどさ。

$str = qq{
// hogehoge /* hogehoge
/* hogehoge
// hogehoge */ hogehoge
};

$str =~ s%(/\*(.*?)\*/)|(//([^\n]*))%($1 ne '')? ('/*'.to_underscore($2).'*/'): ('//'.to_underscore($4))%gse;

print $str;

sub to_underscore {
my($s) = @_;

$s =~ s/\S/_/g;

return $s;
}

95 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)