このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1268979408/467
#  ●正規表現の使用環境 
#  .net(C#3.0) 
#   
#  ●検索か置換か? 
#  検索 
#   
#  ●説明 
#  空白をデリミタとして、最初の文字列を取得したい 
#  空白は半角全角両方あり、複数連続することもあり得る 
#  ただし、()や[]で囲まれる文字列はスルー(空白として処理する) 
#  正規表現一発で抜き出したいです 
#   
#  下記例の各行は全て「山田太郎」だけ抽出されるようにしたいです 
#   
#  山田太郎 39才 
#   山田太郎 39才 
#  (A社) 山田太郎 39才 
#  (A社)山田太郎  39才 
#  (A社 B課)山田太郎 39才 
#  山田太郎(A社)39才 

'空白をデリミタとして、最初の文字列を取得したい。空白は半角全角両方あり、複数連続することもあり得るただし、()や[]で囲まれる文字列はスルー(空白として処理する)'(_文字列,_最初の文字列) :-
        split(_文字列,[' ',' ','(',')','[',']'],L1),
        '空白をデリミタとして、最初の文字列を取得したい。'(L1,_最初の文字列).


'空白をデリミタとして、最初の文字列を取得したい。'(L1,Atom) :-
        '()や[]で囲まれる文字列はスルー(空白として処理する)'(L1,L2),
        '空白をデリミタとして、最初の文字列を取得したい。'(L2,Atom),!.
'空白をデリミタとして、最初の文字列を取得したい。'(L1,Atom) :-
        空白は半角全角両方あり、複数連続することもあり得る(L1,L2),
        '空白をデリミタとして、最初の文字列を取得したい。'(L2,Atom),!.
'空白をデリミタとして、最初の文字列を取得したい。'([A|_],Atom).

'()や[]で囲まれる文字列はスルー(空白として処理する)'(L1,L2) :-
        append(L0,['('|R1],[')'|R2],L1),
        append(L0,[' '|R2],L2),!.
'()や[]で囲まれる文字列はスルー(空白として処理する)'(L1,L2) :-
        append(L0,['['|R1],[']'|R2],L1),
        append(L0,[' '|R2],L2),!.

空白は半角全角両方あり、複数連続することもあり得る([],[]) :- !.
空白は半角全角両方あり、複数連続することもあり得る([' '|R1],R2) :-
        空白は半角全角両方あり、複数連続することもあり得る(R1,R2),!.
空白は半角全角両方あり、複数連続することもあり得る([' '|R1],R2) :-
        空白は半角全角両方あり、複数連続することもあり得る(R1,R2),!.