2012-01-03 13 views
0

私はスペースで囲まれた句読点を含むテキストフィールドを持っています。たとえば、次のようになります。句読点の前後の空白を取り除きます

I don't recall saying ' pick up the boot ' or ' now is the time ' . But it's possible , so I may have . 

これらのスペースを取り除く正規表​​現の構文は何ですか?私はactionscriptで働いています。

編集:上記の例のように、実際には先頭と末尾の両方です。

答えて

1

これを試してみてください:

var str:String = "I don't recall saying ' pick up the boot ' or ' now is the time ' . But it's possible , so I may have ."; 

// "foo ' bar ' baz" => "foo 'bar' baz" 
var re1:RegExp = /'\s(.*?)\s'/g; 
str = str.replace(re1, "'$1'"); 

// "foo , bar . baz" => "foo, bar. baz" 
var re2:RegExp = /\s([.,])/g; 
str = str.replace(re2, "$1"); 

を、この特定の文字列を使用すると、その結果得られます。それは

のような文字列では動作しませんよう、いくつかの調整を必要とする

I don't recall saying 'pick up the boot' or 'now is the time'. But it's possible, so I may have. 

は最初の正規表現てもよいです

I didn ' t say ' foo '. 

最初の正規表現で使用される特殊記号の
I didn 't say' foo '. 

短い説明:

  • \sは空白文字(スペース、タブ)のため
  • .は、任意の文字
  • *ゼロ個以上の繰り返し
  • ?を意味しています*は限定的ではないので、可能な限り少ない文字数で一致します。
  • をすべて括弧で囲むと、キャプチャグループが作成されます。私たちは、後であなたがthis site上またはAdobeからのドキュメントのthis sectionでの正規表現に関する詳細な情報を見つけることができます$1

として置換文字列にその内容を参照することができます。

+0

ありがとうございました!最初のre1をどのように英語で書くのですか?それはそうでしょうか?re1は、シングルクォートとそれに続く...を見つけるパターンですか?私が理解するのが最も困っている部分は(。*?)です。置き換えでも、「$ 1」は何をしていますか? – David

+0

私は短い説明を追加しましたが、あなたのコードでregexpを使うつもりならば、それらについて少し読んでみるのがよいでしょう。 –

+0

はい、読んでいますが、あなたの説明はより速くなります。再度、感謝します。 – David

関連する問題