13/12/17 14:19:52.00
Regular Expressionスレです。
質問する場合は必ず実装言語や処理系ソフトウェア名を示してください。
前スレ
Regular Expression(正規表現) Part11
スレリンク(tech板)
天ぷら等2以降
2:デフォルトの名無しさん
13/12/17 14:21:56.13
スルーされにくい質問のテンプレと例
●Regular Expressionの使用環境
Java1.5
●検索か置換か?
検索
●説明
各行の1番目のAまでを検索したい
●対象データ
ABCA
BCAA
CABA
●希望する結果
ABCA
^
BCAA
^^^
CABA
^^
※ ^ はアンダーラインだそうな ^^;
3:デフォルトの名無しさん
13/12/17 14:25:36.11
◆関連サイト
正規表現メモ
URLリンク(www.kt.rim.or.jp)
Perl正規表現雑技
URLリンク(www.din.or.jp)
Regular Expression(Riue ちゃんの正規表現講座)
URLリンク(www.sixnine.net)
正規表現パズル
URLリンク(www.geocities.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)
4:デフォルトの名無しさん
13/12/17 14:28:55.56
◆関連スレ
[UNIX板] 正規表現
スレリンク(unix板)
[WebProg] 正規表現道場 Part2
スレリンク(php板)
◆前スレ
[1] スレリンク(tech板)
[2] スレリンク(tech板)
[3] スレリンク(tech板)
[4] スレリンク(tech板)
[5] スレリンク(tech板)
[6] スレリンク(tech板)
[7] スレリンク(tech板)
[8] スレリンク(tech板)
[9] スレリンク(tech板)
[10] スレリンク(tech板)
[11] スレリンク(tech板)
5:デフォルトの名無しさん
13/12/17 15:28:30.72
乙
6:デフォルトの名無しさん
13/12/17 15:42:08.77
スレ建ておつ
7:デフォルトの名無しさん
13/12/17 16:58:38.41
>>3
前回不備のあったリンクが直ってるな
8:デフォルトの名無しさん
13/12/17 20:55:54.43
APAスタイルで書かれた参考文献から各フィールドを抜き出したいんだけど、正規表現でやると楽?
著者不明や日付不明、その他タイトルがあったりなかったりするけども。
Perlで最終的にデータベースに流し込みたい。
9:デフォルトの名無しさん
13/12/17 21:09:33.90
APAスタイルってなに
10:デフォルトの名無しさん
13/12/17 21:33:24.69
江南スタイルのことです。
11:デフォルトの名無しさん
13/12/17 21:37:33.08
海外の論文読んだらAPAで書いてあるやつ結構あるだろ
12:デフォルトの名無しさん
13/12/17 21:44:01.17
なんだ。
論文読んだことのない奴には
分からない話か。
13:デフォルトの名無しさん
13/12/17 22:24:05.27
APAスタイル調べてみたけど難しそう
切り分けと判定は別にしたほうがいいような
14:デフォルトの名無しさん
13/12/17 22:41:19.96
●Regular Expressionの使用環境
Perl
●検索か置換か?
検索
●説明
ミドルネームを含む名前も、ミドルネームを含まない名前も分解して抽出したい
また、名前の区切りはスペースやドットなど色々なものに対応したい
●対象データ
Edward Snowden
Edward.Joseph.Snowden
エドワード・スノーデン
エドワード=ジョセフ=スノーデン
●希望する結果
(値を入れているわけではなく、$1~$3に入っていて欲しいものです)
$1 = "Edward" $2 = "" $3 = "Snowden"
$1 = "Edward" $2 = "Joseph" $3 = "Snowden"
$1 = "エドワード" $2 = "" $3 = "スノーデン"
$1 = "エドワード" $2 = "ジョセフ" $3 = "スノーデン"
15:デフォルトの名無しさん
13/12/17 23:59:19.63
>>14
Part11スレへどうぞ
16:デフォルトの名無しさん
13/12/18 00:11:20.15
>>14
どうしても$1~$3に入ってなきゃダメかね?
my $fname;
my $mname;
my $lname;
if ( $buf =~/([a-zA-Z]*)[\s\.・==]([a-zA-Z]*)[\s\.・==]*([a-zA-Z]*)/ ){
$fname = $1;
if (length($3)==0){
$lname = $2;
}else{
$mname = $2;
$lname = $3;
}
}
17:デフォルトの名無しさん
13/12/18 00:13:22.40
>>14
先ずは正規化して、どれかのルールに置き換えた方がいいと思う。
18:デフォルトの名無しさん
13/12/18 00:22:55.22
>>16
日本語は?
19:デフォルトの名無しさん
13/12/18 00:45:13.94
sub namechk{
$buf=shift; #引数として名前を受け取る
if ($buf=~/(.+)(\s|\.|=|・)(.+)(\s|\.|=|・)(.+)/){
return ($1,$3,$5);
}elsif ($buf=~/(.+)(\s|\.|=|・)(.+)/){
return ($1,"",$3);
}
}
こっちのほうがいい。
20:デフォルトの名無しさん
13/12/18 00:58:54.76
正規化しろ
21:デフォルトの名無しさん
13/12/18 01:01:51.51
正規化しろ
22:デフォルトの名無しさん
13/12/18 01:12:12.27
正規表現縛りな奴って何考えて生きてんの?
23:デフォルトの名無しさん
13/12/18 01:42:16.31
正規化したら1行余計なものが増えるじゃん
sub namechk{
$buf = shift;
$buf =~s/(\s|\.|=|=|・)/"."/meg;
if ( $buf =~/(.+)\.(.+)\.(.+)/ ){
return ( $1 , $2 , $3 );
}elsif ( $buf =~/(.+)\.(.+)/ ){
return ( $1 , "" , $2 );
}
}