正規表現 Part7at TECH
正規表現 Part7 - 暇つぶし2ch2:デフォルトの名無しさん
10/03/19 15:18:08
◆関連サイト
正規表現メモ
URLリンク(www.kt.rim.or.jp)
Perl正規表現雑技
URLリンク(www.din.or.jp)
Regular Expression(Riue ちゃんの正規表現講座)
URLリンク(www.sixnine.net)
正規表現パズル
URLリンク(oraclesqlpuzzle.hp.infoseek.co.jp)
詳説 正規表現
URLリンク(www.oreilly.co.jp)
正規表現プログラミングFAQ
URLリンク(capslockabcjp.kitunebi.com)
JScript 正規表現の概説
URLリンク(msdn.microsoft.com)
.NET Framework 正規表現言語要素
URLリンク(msdn.microsoft.com)
【 初心者 】 正規表現 【 入門 】
URLリンク(funcchan.blog16.fc2.com)

3:デフォルトの名無しさん
10/03/19 15:19:04
◆関連スレ
[UNIX板] 正規表現
スレリンク(unix板)
[WebProg] 正規表現道場
スレリンク(php板)

◆前スレ
[1] スレリンク(tech板)
[2] スレリンク(tech板)
[3] スレリンク(tech板)
[4] スレリンク(tech板)
[5] スレリンク(tech板)
[6] スレリンク(tech板)

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

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

●検索か置換か?
検索

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

●対象データ
ABCA
BCAA
CABA

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

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

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

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

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

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

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

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


13:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/03/24 10:40:44
WzやMIFESの置換で、行頭から何文字かを削除する正規表現を教えてください。

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

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

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

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

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



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


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

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

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

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

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

25:デフォルトの名無しさん
10/03/25 01:17:14
うん

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


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

28:デフォルトの名無しさん
10/03/25 01:33:28
うん

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

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

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

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

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

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

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

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

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

35:デフォルトの名無しさん
10/03/25 17:10:59
これをブックマーク
URLリンク(www.google.com)

36:デフォルトの名無しさん
10/03/25 17:30:02

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


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

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

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

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




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

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


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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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



55:51
10/03/26 23:18:47
結構いろいろあるんですね

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

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

viewvcはSubviersionの系統ですか

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

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

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

58:デフォルトの名無しさん
10/03/27 13:01:36


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

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

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

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

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

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

if condition end
if condition endif

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

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

if.+(?!end)$

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

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

これはダサいww

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

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

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

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

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

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

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

が基本だろ。

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

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

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

73:デフォルトの名無しさん
10/03/30 12:45:50
URLリンク(uproda.2ch-library.com)
するけど

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

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

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

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

○ if endend
○ if hoge end fuga
× if end

でいいんだよな?

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

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

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

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

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

プログラム的に

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

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

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

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

○ abc
○ Bbc

× ABC

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


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

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

>>79

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


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

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

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

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

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

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

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

それ、Perlじゃ通らん。

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


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


87:デフォルトの名無しさん
10/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
10/03/31 17:01:33
Perl互換でお願いします。

89:デフォルトの名無しさん
10/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
10/03/31 17:42:29
>>89
レスありがとうございます。
ネストは全く考えていませんでした。
ネストするとかなりややこしくなってしまいますね。
とりあえずなしでお願いします。

91:デフォルトの名無しさん
10/03/31 18:43:30
正規表現クックブック
URLリンク(www.oreilly.co.jp)

出るらしい

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

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

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

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

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

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


98:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/04/06 08:21:49
Javaの話かと思ったらエディタの置換機能かよ!


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

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

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

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

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

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

105:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/04/09 15:44:13
URLリンク(coolstuff.jp)
URLリンク(www.mnet.ne.jp)
どっちが元祖なんだろう

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

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

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

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

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

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


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

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

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

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

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

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

ってことじゃないのかな

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

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

113:108=112
10/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:デフォルトの名無しさん
10/04/13 19:02:56
>けど量指定子が全部食うなら [^\\]+(?=\.txt) でおkな理由もよく分からんし

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

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

116:デフォルトの名無しさん
10/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~となるのでしょうか?

コード表
URLリンク(www.unicode.org)

117:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/04/14 10:08:13
>>113

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

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

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

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



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

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


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

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

123:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/04/15 15:11:31
>>120
あんた馬鹿?
自分が調べたらええやん


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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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



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

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

143:デフォルトの名無しさん
10/04/26 18:41:11

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


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

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


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

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

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

148:デフォルトの名無しさん
10/04/26 20:26:07

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

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

150:デフォルトの名無しさん
10/04/26 20:41:27

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


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


152:デフォルトの名無しさん
10/04/26 23:51:58

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

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

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

155:デフォルトの名無しさん
10/04/27 00:48:52

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

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

157:デフォルトの名無しさん
10/04/27 01:44:59

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


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

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

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


160:デフォルトの名無しさん
10/04/27 02:22:28

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

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


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

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


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

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

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

166:デフォルトの名無しさん
10/04/27 16:54:53

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

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

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

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

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

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

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

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

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

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

173:デフォルトの名無しさん
10/04/27 21:01:58

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

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

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

176:デフォルトの名無しさん
10/04/27 23:27:25

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


177:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/04/28 00:32:33
>>177
なつかしすw

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

0でわるな

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

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

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

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

182:181
10/04/28 13:42:54
自己解決
sage忘れすまん

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

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

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

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

186:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/04/29 02:04:27
>>186
ありがとうございます。
これをよく見て勉強します。

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

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

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

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

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

頑張ってください


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

192:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/05/02 10:06:13
正規表現 欲張り

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

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

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

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

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

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

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

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

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

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

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

204:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/05/06 12:35:18
>ていうか言語クラス違うくね?できるもんなのか。
日本語でOK。

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

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

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

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

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

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


213:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/05/15 19:39:38
>>213
NAME[\s ]?(?.+)\nEND

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

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


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

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

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

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

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

お願いします


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

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

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

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

223:デフォルトの名無しさん
10/05/21 05:39:03
URLリンク(www.youtube.com)
URLリンク(www.youtube.com)
URLリンク(www.youtube.com)
URLリンク(www.youtube.com)
URLリンク(www.youtube.com)
URLリンク(www.youtube.com)
URLリンク(www.youtube.com)
URLリンク(www.youtube.com)
URLリンク(www.youtube.com)

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


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

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


227:デフォルトの名無しさん
10/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
10/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
10/05/22 01:06:01
実際には、Webサイトにある更新日 (Update:2010/04/30) という
文字の色を変えるのに使いたいです。※更新”されていない”ものは赤で表示。

TCP Monitor Plus (OGA'sさんのサイト)
URLリンク(hp.vector.co.jp)

//バージョン更新チェック
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
10/05/22 01:07:27
説明が下手ですみません。

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

よろしくお願いします。

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

232:277
10/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:デフォルトの名無しさん
10/05/28 22:43:12
グローバルフラグを付けなくてもいいようなケースにもグローバルフラグを付けた場合
どれだけ無駄になりますか?とてつもなく無駄ですか?微々たるものですか?

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

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

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

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

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

●検索か置換か?
検索

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

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

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


よろしくお願いします

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


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


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch