正規表現の実例

2005-09-15 22:20:34 | Weblog
◆正規表現入門
^ 行の先頭
$ 行の末尾
. 改行以外の任意の1文字
[] []でくくられた中にある任意の1文字
[^] []でくくられた中にない任意の1文字
* 直前の文字の0個以上の並び
+ 直前の文字の1個以上の並び
? 直前の文字が0個または1個
{a} 直前の文字のa個の並び
{a,} 直前の文字のa個以上の並び
{a,b} 直前の文字のa個以上、b個以下の並び
| 2者択一の演算子
 
◆正規表現の使用例
■行の先頭「^」
^java 行の先頭がjavaという文字で始まっている場合
■行の末尾「$」
java$ 行の末尾がjavaという文字で終わっている場合
■改行以外の任意の1文字「.」
java.. javaの後に改行以外の任意の文字が2つ続く場合
■[]でくくられた中にある任意の1文字「[]」
[a-z] 小文字のアルファベットの中の1文字
[A-Z] 大文字のアルファベットの中の1文字
[a-zA-Z] 小文字または大文字のアルファベットの中の1文字
[0-9] 数字の中の1文字
[0-9a-z] 数字または小文字のアルファベットの中の1文字
■[]でくくられた中にない任意の1文字「[^]」
[^a-z] 小文字のアルファベット以外の1文字
[^A-Z] 大文字のアルファベット以外の1文字
[^a-zA-Z] アルファベット以外の1文字
[^0-9] 数字以外の1文字
[^0-9a-z] 数字以外、小文字のアルファベット以外の1文字
■直前の文字の0個以上の並び「*」
J* 0個以上のJの繰り返し
.* 0個以上の任意の文字の繰り返し
J.*D JとDの間に0個以上の任意の文字の繰り返し
■直前の文字の1個以上の並び「+」
J+ 1個以上のJの繰り返し
.+ 1個以上の任意の文字の繰り返し
J.+D JとDの間に1個以上の任意の文字の繰り返し
■直前の文字が0個または1個「?」
JA? JまたはJA
■直前の文字のa個の並び「{a}」
J{2} JJ
J{3} JJJ
■直前の文字のa個以上の並び「{a,}」
J{3,} JJJ,JJJJ,JJJJJ,・・・(3回以上のJの並び)
■直前の文字のa個以上、b個以下の並び「{a,b}」
J{3,5} JJJまたはJJJJまたはJJJJJ
■2者択一の演算子「|」
J|A JまたはA
Java|Hello JavaまたはHello

JavaScriptの問題解決

2005-09-15 00:16:21 | Weblog
javascriptの問題、ユーザのクリックからJavaScriptでクリックした単語のStringを獲得して、それをアプレットに送信し、表示するっていう仕組み。最初は:クリック側のコードは:

(script language='JavaScript')(!--
function toSubWin( obj )
{
window.open('applet.html?'+obj.firstChild.toString(),'sw');
}
// --)(/script)
(HTML)
(HEAD)

ちなみにアプレットは次のようなもので
import java.awt.*;
import java.applet.*;

public class SimpleApplet extends Applet{

public String word1;

public void init(){
word1 = getParameter("word") ;
setBackground(Color.yellow);
setForeground(Color.white);
setFont(new Font("Serif", Font.BOLD, 20));
}

public void start(){
repaint();
}

public void paint(Graphics g){
g.drawString("あるかどうか"+word1+"この前", 100, 60);
}
}
(TITLE)(/TITLE)
(/HEAD)
(BODY)
(a onClick='toSubWin(this)')ここをクリック(/A)
(/BODY)
(/HTML)


クリックしたのを受け取る側のHTMLは
(html)
(body)
データ表示(br)
(script language="JavaScript")
(!-- str = location.search;
   str = str.substring(1,str.length);  
   document.write(str); // --)
(/script)
(applet code='SimpleApplet' name='app' width='500' height='500')
(script)
document.write("(param name='word' value=str)");
(/script)
(/body)
(/html)

しかし、これでは、どうしてもwordの値をアプレットに送信することが出来なかった。そこで、strを直接呼ぶではなく、頭の所で定義した関数を呼ぶことで獲得する
ことで問題解決した。
コードは次のように変えた:
(html)
(head)
(title)渡された値を表示する(/title)
(/head)
(body)
渡された値を表示する(br)
(script language="JavaScript")(!--

function getStr(){
str = location.search;
str = str.substring(1,str.length);
return str ;
}
// --)(/script)
あるかな?

(script language="JavaScript")
document.write("(applet code='SimpleApplet' name='app' width='500' height='500')");
document.write("(param name='word' value="+getStr()+")");
(/script)
(/body)
(/html)
ちなみに、アプレットは次のようなものだった
import java.awt.*;
import java.applet.*;

public class SimpleApplet extends Applet{

public String word1;

public void init(){
word1 = getParameter("word") ;
setBackground(Color.yellow);
setForeground(Color.white);
setFont(new Font("Serif", Font.BOLD, 20));
}

public void start(){
repaint();
}

public void paint(Graphics g){
g.drawString("あるかどうか"+word1+"この前", 100, 60);
}
}