トップページ⇒php
981コメント301KB

正規表現道場@2ch Part4

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん05/01/17 11:51:25ID:SH1ygN1P
Perlに限らずスクリプト系言語で大活躍の正規表現。
このスレは有用そうな正規表現を紹介したり、
どう表現したらいいかわからないときに質問をしたりするためのスレッドです。
質問するときは使用言語や得たい結果をなるべく詳しく書きましょう。

註:& や " を書くときには、& " と描いておきましょうね。

Perlメモ
 http://www.din.or.jp/~ohzaki/perl.htm
正規表現メモ
 http://www.kt.rim.or.jp/~kbk/regex/regex.html
Regex::Diagram.pm
 http://www.cc.rim.or.jp/~midorin/mad-p/RegexDiagram.html
正規表現
 http://www.cc.rim.or.jp/~midorin/mad-p/perl/benkyou/PRC2kRegex/
UNIX正規表現入門 目次
 http://www01.u-page.so-net.ne.jp/jc4/hiroyuki/rex_index.html
Regular Expression(Riue ちゃんの正規表現講座) - Index
 http://www.sixnine.net/regexp/

ほとんどは↓のリンク集にまとまっています。
正規表現最新リンク集2002
 http://www2.famille.ne.jp/~akio1998/l_grep.html

過去スレ
正規表現道場@2ch
 http://pc.2ch.net/test/read.cgi/php/996105815/
正規表現道場@2ch Part2
 http://pc2.2ch.net/test/read.cgi/php/1038146241/
正規表現道場@2ch Part3 s/煽り|荒らし/あぼーん/g
 http://pc5.2ch.net/test/read.cgi/php/1069245758/
0268nobodyさん2005/03/26(土) 16:07:09ID:???
AA(と思われる文字列)を正規表現で表すのは不可能ですか?
0269nobodyさん2005/03/26(土) 16:14:16ID:???
AAってアスキーアート?
0270nobodyさん2005/03/26(土) 16:16:10ID:???
>>268
「と思われる」をどの程度と考えるかによるとは思うが、

不可能。
02712682005/03/26(土) 16:16:30ID:???
そうです。
掲示板にAAの大量投稿荒らしが発生してしまって、
正規表現である程度は弾けないか、、と思いまして・・・
0272未承諾広告※ ◆TWARamEjuA 2005/03/26(土) 19:04:15ID:???
行頭に全角空白が連続していたり、;が連続していたりなんて如何でしょう?@条件
このあたりはRock54でも難しかったりしますけれども(苦笑)
0273nobodyさん2005/03/26(土) 19:18:46ID:???
何この糞コテ
0274nobodyさん2005/03/26(土) 19:30:37ID:???
>>273
未承諾広告※ ◆TWARamEjuA たんはエロい人なんでつよ。
酩酊してることもあるみたいだけど。
0275nobodyさん2005/03/26(土) 20:19:03ID:???
取り巻き付きとかカッコ良すぎでこのスレには似合いませんね
0276nobodyさん2005/03/29(火) 10:39:16ID:???
/\∀Дωが合計5個以上とか
0277nobodyさん2005/03/29(火) 18:07:37ID:???
記号が連続するので判断するとか
0278nobodyさん2005/03/30(水) 01:42:50ID:???
勉強中ですがいまいち挙動がわかりません。
ご教授下さい。言語はPHPです。

下記参照
$strのヒアドキュメントから2パターンマッチしてます。
なぜ、"<!-- ▲パターンマッチのサンプル-->"これが
マッチしないのかがわからないのです。

====== source =============
$str = <<<_EOT_
<!-- ▼パターンマッチのサンプル -->
<p>パターンマッチ</p>
<!-- ▲パターンマッチのサンプル-->
_EOT_;

preg_match("/^<!--([^<>]+)-->/", $str, $match);

print_r($match);

====== source =============
====== 結果 =============
Array
(
[0] => <!-- ▼パターンマッチのサンプル -->
[1] => ▼パターンマッチのサンプル
)
============================
0279nobodyさん2005/03/30(水) 04:18:21ID:???
>>278
▼ で一回パターンマッチした時点でおしまい。
パターンマッチを複数回繰り返したいなら preg_match_all とかを使う。
0280nobodyさん2005/03/30(水) 07:26:59ID:???
>>278
それと1行だけしか判定しないから複数行を調べるときはmオプションをつける
0281nobodyさん2005/03/30(水) 11:29:42ID:???
質問です。
環境はVBScriptで、VBScript.Regexpを使用しています。
元の文字列は
A 1
B 2
  3
C 4
D 5

又は

B 1
D 2
  3
C 4
A 5

この様な形です、そのときにBの列の値(上の例だと2\n  3、下の例だと1)を取得したいのですが、うまく取れません。
現在の正規表現は
B *((.*\n)*) *(A|C|D)
この形です、現在とれる値は上の例ですと(2\n 3\nC 4)下の例ですと(1\nD 2\n  3\nC 4)
この様になっています、どのようにすればよいでしょうか?
0282nobodyさん2005/03/30(水) 12:29:28ID:???
>>279,280さんどうもです。
自分でsourceを弄くっているうちにmオプション取って書き込んでしまいました。
mオプション(単一行化)をつけ"
<!-- ターンマッチのサンプル-->"になぜマッチしないのかがわかりません。
<!-- から始まってるのに・・・
0283nobodyさん2005/03/30(水) 13:04:07ID:???
>>282
だからpreg_match_ALLだって
0284nobodyさん2005/03/30(水) 16:28:08ID:FkBnaI5T
場違いかもしれませんが失礼します。
20020301というような年月日名のファイルをプログラムで検索させる時
20020330以降というような判断条件を正規表現で表現できるでしょうか。
(もし20020350というファイルがあった場合条件合致としない)
プログラムですれば出来るのですが、条件は自由に編集できるようテキスト
で保存したいと考えています。
ちなみに私の正規表現知識は”\.^$[]*+?|()”くらいしかないです。
正規表現で出来るかが知りたいので使わないというのは無しでお願いします。
0285nobodyさん2005/03/30(水) 16:46:46ID:???
正規表現”だけ”なの?
”だけ”だとできないんじゃね?
0286nobodyさん2005/03/30(水) 16:56:58ID:???
理論的には不可能ではないんだろうけど、
20020350 みたいな validation check までするとなると、
正規表現だけでやるのは無理と思った方が賢明と思われ。
0287nobodyさん2005/03/30(水) 17:12:36ID:???
>>281
RegExp::Multiline をセットして、こうかな。
^B *(.+(\n .+)*)\n
0288nobodyさん2005/03/30(水) 19:26:51ID:FkBnaI5T
>>285>>256
やはり無理っぽいですか。
ありがとうございました。
0289nobodyさん2005/03/30(水) 19:30:05ID:???
釣りかと思ってた
0290nobodyさん2005/03/30(水) 21:54:20ID:???
おれは純粋なアホかと思ったw
0291nobodyさん2005/03/30(水) 23:14:41ID:oXQqC/Dj
正規表現を使って、
「任意の範囲におさまる数」を検出することは出来るでしょうか?
たとえば、123〜4567の間の整数ならヒットする、という風にしたいのです。
0292nobodyさん2005/03/30(水) 23:26:41ID:???
できる
0293nobodyさん2005/03/30(水) 23:43:55ID:???
my ($number, $ok) = (1234, undef);
$number =~ s/^(\d+)$/$ok = ($1 >= 123 and $1 <= 4567) ? 1 : 0/e;
printf qq|%s\n|, $ok ? 'OK': 'NG';
0294nobodyさん2005/03/31(木) 00:01:39ID:???
$str = "2344rsfsdfewr324wsefare65j34ja3644wk7we45ke5rjy4e575564";
@result = grep { 123 <= $_ and $_ <= 4567 } $str =~ m/(\d+)/g;
$, = ', '; print @result;
0295nobodyさん2005/03/31(木) 00:04:42ID:???
>>294
無理に正規表現にしなくてもじゃなくていいじゃんw
0296nobodyさん2005/03/31(木) 00:05:59ID:???
落ち着け
0297nobodyさん2005/03/31(木) 07:35:22ID:???
>>293
($1 >= 123 and $1 <= 4567)
これ正規表現なのか
0298nobodyさん2005/03/31(木) 12:15:37ID:???
PHP で mb_ereg_replace を使おうと思ってるんですけど、
1:  を white space
2:<br> を 改行
3:あと strip_tags()
したいです。教えて下さい。
0299nobodyさん2005/03/31(木) 12:28:22ID:???
>>298
$txt = mb_ereg_replace(" ", "white space", $txt);
$txt = mb_ereg_replace("<br>", "改行", $txt);
$txt = mb_ereg_replace("あと", "strip_tags()", $txt);
03002982005/03/31(木) 12:34:34ID:???
>>299
釣りですか?
03012992005/03/31(木) 12:36:34ID:???
>>298
何がわからないのかがわからないので関数の使い方を書いておいた
0302nobodyさん2005/03/31(木) 12:49:09ID:???
釣り:>>298
煽り:>>299
OK?
0303nobodyさん2005/03/31(木) 12:51:28ID:???
>>298

$orig = mb_ereg_replace("<[Bb][Rr][^>]*>", "\n", $dest);
$orig = mb_ereg_replace("&[Nn][Bb][Ss][Pp];", "", $dest);
$orig = mb_ereg_replace("<[^>]*>", "", $dest);
0304nobodyさん2005/03/31(木) 13:05:50ID:???
>>303
それならmb_eregi_replaceの方が
0305nobodyさん2005/04/04(月) 22:21:36ID:???
PHPでマルチバイトの正規表現で質問なのですが
『連続する文字列"_正規表現道場_"を除く、全角文字を含むすべての文字列』はどのように表現すればいいですか?
0306nobodyさん2005/04/05(火) 21:17:54ID:???
縦組の印刷物からwebページにしたのはよいのですが数字がことごとく漢数字です。そのくせなんとか一郎さんとかもいて単純に置換する訳に逝きません。
質問1
正規表現を使って、エディタの検索置換を利用してこれを一発で直すのは不可能でしょうか?
質問2
perlとか使えば可能でしょうか?
0307nobodyさん2005/04/05(火) 23:19:41ID:???
答3
別に読めないわけでもないしほっとく。
0308nobodyさん2005/04/07(木) 23:03:21ID:???
http://ns1.php.gr.jp/pipermail/php-doc/2005-April/000496.html
0309nobodyさん2005/04/08(金) 00:12:00ID:???
>>306
そんな質問で答えられるかよ!
ソース(元の文書)のサンプルくらいないとどうにもならんよ。

「一二三五十六三郎一郎」 どれが名前かわかるか?

答え→全て名前w
0310nobodyさん2005/04/08(金) 09:57:45ID:???
一ニ三(ひふみ)という名前を知っている
0311nobodyさん2005/04/08(金) 10:38:14ID:???
一二三五十六(ひふみいそろく で変換できるね)
0312nobodyさん2005/04/08(金) 13:57:54ID:???
>>306
オマイが悩むよりSOHOのおばちゃんの方が安くて便利そうだな。
0313nobodyさん2005/04/09(土) 17:39:30ID:???
いろんな国の人が参加する ML を web で公開しようと思ってるんだけど、
電話番号だけは抜きたいと思っています。
基本的にアメリカ人が多いので、XXX.XXX.XXXX な文字並びだけど、
日本みたいに ー (ハイフン)で区切る、みたいな約束事ないし、すごい困ってます。
どうしたらいいでしょう?なにかヒントを下さい。
03143132005/04/09(土) 17:40:26ID:???
書き忘れました。php を使ってます。
0315nobodyさん2005/04/10(日) 11:42:30ID:???
よーわからんけど
/[\d\.\-]{4,15}/
0316nobodyさん2005/04/13(水) 01:12:27ID:5d8FOn3z
phpで掲示板を作っているのですが、
HTMLにおいて下のようなものがあるとします。
<html><head>...略...
<div>
<!--A-->
<p>Aです</p>
<!--/A-->
<!--B-->
<p>Bです</p>
<!--/B-->
</div>
...略...</html>
これの\n、\r、\tを取り除いた後、
preg_match_all("/<!--([A-Z]*?)-->.*?<!--\/\\1-->/", $pattern, $file);
で、マッチさせると、
<!--A-->がひとつだけのときには成功するのですが、
<!--B-->が加わるとブラウザのページが開かなくなります。
原因をご存知の方はお教えください。
0317nobodyさん2005/04/15(金) 12:12:06ID:???
javaソースを検索していますが、
calendarクラスで最初にコールされているメソッドがget???の物を調べたく、
perlの正規表現で、
(\w+)\s*=\s*Calendar\.getInstance.*?(!?\1)\.get
を指定しましたがうまくいきません。
下の個所ではヒットしないことを望んでいますが、1〜3行目でヒットします。

1 Calendar cal = Calendar.getInstance();
2 cal.setLenient(false);
3 cal.getTime();

.*?(!?\1)\.get は calendarインスタンスが最初に呼ばれている個所で、メソッドがgetで始まるを期待しています。

0318質問2005/04/15(金) 19:01:05ID:jvrJ4EBi
<市部:さいたま>
<郡部:吉見>
<市部:秩父>
<市部:川越>

 ↓上のデータを

<市部:さいたま市>
<郡部:吉見>
<市部:秩父市>
<市部:川越市>

のように先頭から「<市部:●●>」とマッチングするものを、
「<市部:●●市>」に置き換えるにはどうしたらよいでしょうか
(ただし、「●●」は流動的なものとする)

$data =~ s/<[市部:]*>/<市部:$_市>/;
上のようにやったところ、$_に何も値が入りません。
0319nobodyさん2005/04/15(金) 19:05:08ID:???
/<市部:(.*?)>/<市部:$1市>/
0320nobodyさん2005/04/15(金) 19:13:10ID:???
ああ、:が半角になってもうた。
0321質問2005/04/15(金) 19:18:57ID:jvrJ4EBi
>>319
ありがとうございました!
0322muro p5172-ipad05okidate.aomori.ocn.ne.jp/2005/04/15(金) 20:01:28ID:???
え     っ     る     ハ     
  ぇ     し     の    ァ ハ  
    け     と     ぉ     ァ 
うはっwww夢がひろがりんぐwwwwww   
0323nobodyさん2005/04/15(金) 20:49:10ID:???
うはwwwデスクトップ、エロゲばっかwwwww
0324nobodyさん2005/04/16(土) 00:12:52ID:???
ワロタW
0325nobodyさん2005/04/20(水) 16:00:48ID:ns2jNcNy
<A HREF="http://www.hogehoge.ne.jp/~nakama/">
<A HREF='http://www.hogehoge.ne.jp/~nakama/'>
<A HREF=http://www.hoge.ne.jp/~nakama/>
<A HREF=http://www.hoge.ne.jp/~nakama/ TARGET=_blank>

上からURLだけを抜き出したいのですがいまいちわかりません。
何となく正規表現はわかっているのですが。
解決になるような事でもなんでもいいので教えてください。よろしくお願いします。
0326nobodyさん2005/04/20(水) 17:11:27ID:???
なんとなくわかってるなら
なんとなく抜き出せるだろうから
なんとなく聞く必要がないんじゃないかと思う
0327nobodyさん2005/04/20(水) 18:20:03ID:???
なんとなくレベルの知識で書いた、いまいちわからない正規表現とやらをまず出してみなよ。
0328nobodyさん2005/04/20(水) 18:30:19ID:???
URLの正規表現なんてすぐ見つかるだろうに。
0329nobodyさん2005/04/20(水) 18:46:23ID:???
ピンキリだけどね
0330nobodyさん2005/04/20(水) 20:05:32ID:y0ltMBju
$hoge = ’
<select name="a">
<option value="A" selected>■</option>
<option value="B">★</option>
<option value="C">▲</option>
</select>

<select name="b">
<option value="A">■</option>
<option value="B">★</option>
<option value="C" selected>▲</option>
</select>
’;



となっている場合、
『selected』が付いているoptionにマッチさせ、
そのvalue値【A】を$hoge1へ代入するしたいのですが、
正規表現はどのようになるのでしょうか?

$hoge =~ /value="?([^"]+)"? selected/g
$hoge1 = $1;
$hoge2 = $2;

↑これでは、ダメでした。
御教授 お願い致しますm( __ __ )m
0331nobodyさん2005/04/20(水) 21:26:49ID:???
そういうhtmlファイルを一行ずつ読むコードなら
その正規表現でもAとCを取り出せるんだけどね。
0332nobodyさん2005/04/21(木) 00:11:41ID:???
>>330
@array = $str =~ /<option\s+(?:\S+\s+)*?(?:value\s*=\s*(?:"([^"]*)"|'([^']*)'|(\S*)).*?selected|selected\s+(?:\S+\s+)*?value\s*=\s*(?:"([^"]*)"|'([^']*)'|(\S*)))\s*(?:\S+\s+)*?>/g;
$hoge1 = join"",splice @array,0,6;
$hoge2 = join"",splice @array,0,6;
0333nobodyさん2005/04/21(木) 00:17:28ID:???
ごめん、>>332はやりすぎた。

@array = $str =~ /<option value="([^"]+)" selected>/g;
$hoge1 = shift @array;
$hoge2 = shift @array;
0334nobodyさん2005/04/21(木) 00:53:08ID:???
>>325
@array = $html =~ /<a\s+.*?href\s*=\s*(?:"([^"]*)"|'([^']*)'|(\S*)).*?>/gi;
push @url, join"", splice @array,0,3 while @array;
0335nobodyさん2005/04/21(木) 09:53:22ID:L6TjsDSV
PHP4.3.11の環境で、PHPプログラムで読み込むhtmlファイルに
以下のように自分で決めたブロック要素的なコメントタグを挟んでいます。
---------------------------
<!--mytag-->
 aaa
 <!--mytag-->
 bbb
 <!--/mytag-->
 ccc
<!--/mytag-->
ddd
<!--mytag-->
eee
<!--/mytag-->
----------------------------

この中で、内側にそれ以上自分で決めた同一コメントタグが
入っていない部分、つまり、
<!--mytag-->
 bbb
 <!--/mytag-->
と、
<!--mytag-->
eee
<!--/mytag-->
の部分のみ取り出したいのですが、どのような式を書けば良いでしょうか。
03363352005/04/21(木) 11:55:55ID:L6TjsDSV
自己解決。

$s = "<¥!¥-¥-mytag¥-¥->";
$e = "<¥!¥-¥-¥/mytag¥-¥->";
$rgexp = "/$s(?:(?!($s|$e)).)+$e/s";

で判別できました。
0337nobodyさん2005/04/21(木) 13:58:44ID:???
質問です。
掲示板に書き込まれた本文の行末に改行タグがある場合、
それを除去するという処理を加えたいと思っています。
$textが"test<BR><BR><BR><BR><BR><BR><BR><BR><BR>"などのように、
文末に<BR>がある限り、それを取り除く処理にしたいと思います。
この場合ですと、"test"という文字列だけにしたいと思っています。
$textが"test<BR><BR><BR><BR>test2<BR><BR><BR><BR><BR>"であれば、
"test<BR><BR><BR><BR>test2"にしたいと思っています。

while ($text =~ /<BR>$/) {
 $text =~ s/<BR>$//g;
}

この記述で動かないのですが、どこが原因なのでしょうか。
0338nobodyさん2005/04/21(木) 15:00:35ID:???
>>337
$textの最後に本当の改行コード(\nとか\r\n)がついてるんじゃないの。
0339nobodyさん2005/04/21(木) 15:06:43ID:???
>>337
$text =~ s/(?:<BR>)+$//;
03403302005/04/22(金) 00:10:20ID:???
>>331様
アドバイスありがとうございます。
>>333様
御教授ありがとうございます。
早速試してみましたが、うまく代入されませんでした。。。


$_ = $hoge;
my @hoge = /value="(.+)" selected/g;
$hoge1 = $hoge[0];
・
・
・
・
これで、自己解決いたしました。
0341nobodyさん2005/04/24(日) 04:15:14ID:???
やぶだけど。
>>333がダメってのは、「$str」 を 「$hoge」 にしてないだけだと思うがw

自分的には↓で済む気がする。
my ($hoge1, $hoge2) = $hoge =~ /<option\s*?value="([^">]*?)"\s*?selected>/g;

あと $hoge は、ヒアドキュメントにしる。
0342nobodyさん2005/04/26(火) 15:49:33ID:???
ごめん教えて。

「先頭から最後まで<br>と\s以外の文字が1つもない」

・・・
0343nobodyさん2005/04/26(火) 20:14:20ID:???
>>342
ごめん何を教えてほしいのか教えて。
0344nobodyさん2005/04/26(火) 22:35:00ID:???
[^\s|(<BR>)]
iオプション付けてね
0345nobodyさん2005/05/06(金) 00:14:31ID:???
|゚Д゚)・・・
0346nobodyさん2005/05/10(火) 20:33:44ID:???
$txtから"きゅうり","すいか"2つの単語が含まれていた場合に
マッチさせたいんですけど、うまく動いてくれません。
どうすればいいでしょうか。

$txt = "トマトきゅうりピーマンなすすいか";
if(mb_eregi("[きゅうりすいか],$txt)){echo "合致";}
0347nobodyさん2005/05/10(火) 20:45:59ID:P1c+fxiD
http://d3079189.tcat.ne.jp/
うぇwwwwwwwwwwwwwwwおkwwwwww
wwwwwwwwwwwwっうぇ

wwwwwおkwww
wwwwwwwwwwwwwwwwwwwwwwwww
0348nobodyさん2005/05/10(火) 21:26:22ID:???
>>346
ダブルクォートが閉じてないのは打ち間違いだろうけど、
文字クラスについて勘違いしてるようだ。
0349nobodyさん2005/05/10(火) 21:56:28ID:???
" きゅうり*すいか*"
こうですか?
0350nobodyさん2005/05/10(火) 22:04:57ID:???
うむ、勉強しなおして来い。
0351nobodyさん2005/05/10(火) 22:14:43ID:???
mb_eregi("/(きゅうり)+(すいか)+/",$test)
師匠これでもだめです。
ヒントください
0352nobodyさん2005/05/10(火) 22:14:42ID:???
>>346
http://www.din.or.jp/%7Eohzaki/regex.htm#And
0353nobodyさん2005/05/10(火) 22:33:57ID:???
師匠ありがとうございました。
mb_eregi("(?=.*きゅうり)(?=.*すいか)",$txt)
これでできました。
0354nobodyさん2005/05/11(水) 14:06:16ID:8aMwQX6h
wordでの話しなのですが、機能というより、正規表現のアルゴリズム?
についてなのでここでお願いしますm(_ _)m

CSV形式のファイルをwordに取り込んだときに、CSV特有の文字列にはダブルクォート、その中のダブルクォートにも
ダブルクォートの部分がそのまま残ってしまって困ってるので、wordの置換機能で削除しようと思ってます。

単純にダブルクォートだけなら
検索:"(*)"
置換:\1
で、できますがこれだと
"19""1238","a9a0","0198"
などでしくじってしまいます。

どういう式にすればいいでしょうか?
Perlの知識はありますので、回答はwordでの式でなくてもPerlでの式でも大丈夫です。

宜しくお願いしますm(_ _)m
03553542005/05/11(水) 14:14:27ID:8aMwQX6h
Perlではいつもtext::CSV_XSでやってるからファイルを見れば分かると思ったのですが、
わかりませんでした・・・・orz

置換演算子でヒットしなかったのはなんでだろ・・・・
0356nobodyさん2005/05/11(水) 18:18:19ID:???
>>354
ワードってPerl形式の正規表現使えたっけ?
それにPerlの知識があるなら、CSVをPerlでいじってからワードに取り込めばいいだけじゃ?

ついでにいえば、Excelで取り込めば、適切なデータになるじゃん。
それをワードに貼り付けるなり埋め込むなりすればいいんじゃ?

なんというか、道具があるのに変に知識だけ持ってるから
逆に面倒にしてるだけだし・・・
03573542005/05/11(水) 20:09:41ID:8aMwQX6h
>>356
wordの置換はperlとはちょっと違いますけど、考え方は同じようなものなので。

データはワードで使いたいんです。
Excelで取り込むと適切なデータになりますが、それをwordにコピペするとちょっと違う
ことになってしまうんです。
wordで普通に「挿入」→「表」で作る表とは違う、オブジェクトとしての表になってしまって
後からいじったりできないんです。

Perlでいじってからというのは確かに、Text::CSV_XS使ってやればできますが、
毎度一旦Perlを通すのもあれですし、仕事場ですので毎度同じPCを使えるわけでは
ないのです。wordなんかの基本ソフトはどのPCにでも入ってますが。

できればwordだけでやりたいので、wordの置換で、と思ったのですが。
CSVのクォート削除正規表現って簡単そうで、結構難しいんですかね?
私が未熟だからだけかと思ったら、このスレの方でもパッはでてこないんですね。

でも、もしもわかるかたいましたらお願いします。1日1回は見に来ますので。
0358nobodyさん2005/05/11(水) 20:25:22ID:???
>>357
>wordで普通に「挿入」→「表」で作る表とは違う、オブジェクトとしての表になってしまって
>後からいじったりできないんです。

悪いことは言わない、MS WORDの入門書なり勉強やり直した方が良いよ。
Perl弄ってるとか置換作業とか変な知識とか作業要らない。
お前さんが言ってる事は、普通に出来る。

聞いてると、ただWORDを使いこなせない工場とかのおじちゃんおばちゃんレベル。
0359nobodyさん2005/05/11(水) 21:16:53ID:???
Google のキャッシュ表示にあるような
ハイライト表示を実現したいと思っています。

HTML ソース内のある単語を置換するときに
タグ内にその単語が含まれる場合は無視する
という表現はどのように書けばよいでしょうか。
言語は Perl です。
0360nobodyさん2005/05/11(水) 21:25:19ID:a0NETEmd
>>354
s/"((?:[^"]|"")*)"/$1/g
s/""/"/g

の2回にわけるのが楽だと思われる。
0361nobodyさん2005/05/11(水) 21:28:57ID:???
なぁ、今、適当に作ったCSVファイルをエクセルで読み込んで、
でもって、そのセルの部分をドラッグドラッグして全部選択して、Ctrl+Cでコピーして
ワードでCtrl+Vで貼り付けしたら、普通にワードで表作った形式になったんだけど・・・

やっぱり、MS Officeの知識が無いって事でFA?
03623592005/05/11(水) 21:32:07ID:???
自己完ですが

$output =~ s#(?<=>)([^<]+)?\b($regexp)\b#$1<B style="color:black;background-color:\#ffff66">$2</b>#gis;

でできました。
0363nobodyさん2005/05/11(水) 21:39:20ID:a0NETEmd
>>359
正規表現だけでなんとかしようと考えないほうがいいと思うよ。

オレならこんな感じにするかねぇ。

$s = <<HTML;
<html>
<a href="foo.html">foo</a>
</html>
HTML


$s = ">$s<";
$s =~ s/>([^<]*)</$_ = $1; s|foo|baa|g; ">$_<"/ge;
$s = substr($s, 1, -1);
print $s;
03643542005/05/12(木) 17:56:56ID:mNlaSBNN
>>358
普通にできるというのは、エクセルからのコピペや、ワードでの置換作業なしに
既存のword文書にCSVをworr形式の表化して取り込めるということでしょうか?

ヘルプでは見つけられませんでしたが、もしかしたら私のword2000ではできないのかな。
何年版のwordでしょうか?

>>361
あれ、できましたね;
XLSの取り込みと勘違いしたのかもしれません。
03653542005/05/12(木) 17:58:39ID:mNlaSBNN
>>360
ありがとうございます!
一旦外枠だけはずしてやるんですね^^
さすがですm(_ _)m
0366nobodyさん2005/05/12(木) 18:04:52ID:???
>>364
俺もやってみた。

拡張子CSVはExcelと関連付けられているので、CSVファイルをダブルクリックして開く。
CSVは正常な形に各セルに表示されているのを確認。
先に、Excelで開いたCSVのデータを格子状に罫線を引き、
ドラッグして貼り付けたい範囲を選択してCtrl+Cでクリップボードにコピー。

その後、Wordを新規に開き、そこへ、Ctrl+Vで貼り付けてみた。

普通にWordで表を作った見たいな形式に張り付いた。

使用したのはMS Office2000。
03678202005/05/13(金) 16:57:34ID:JEsyMCCs
Greplaceというソフトを使って、txtファイルの置換処理をしているところなのですが

「httpで始まって--で終わる文字列」を正規表現で表現すると
http*-- でいいだろうと思って検索かけたところひっかかりません。
しょうがないので、 http.-- に表現を変えてみたのですが、これもヒットせず。

どなたか、こうやって書けばいいんだよと教えていただけると助かります。
0368nobodyさん2005/05/13(金) 17:39:23ID:???
http.*--
だろうなぁ。
■ このスレッドは過去ログ倉庫に格納されています