SynchRoidでの正規表現に詰まったため、覚書程度になるが記しておく。
#Case1
このように出力されている文章から
文頭の1929394 だけ取り出したい。
このように記述。
きちんと出力できた。
* で をエスケープ
(\d{7})で、任意の 10 進数の数字 ( "0"、"1" ... "9" など) を7回繰り返しているものに一致するように指定。
. で、以降は何の文字列でもよいことを指定している。
#Case2
このように出力されている文章から
てすと だけ取り出したい。
$1で出力範囲を()内だけに指定
数量を表すものは、10個 20箱 30人 5000円
など、数字+空白ではないもの、で構成されている。
そのため、
\s => 任意の空白文字
\d* => 数字(*にすることで桁数は何桁でもよい)
\s => 任意の空白文字
\S => 任意の非空白文字 ( " "、タブ、リターンなどを除外した "." と同じ)。
(※\Sは\Dでも良い)
というパターンを記述する。
きちんと出力できた。
#Case3
この中から
@11人x20袋 だけ出力したい。
このように記述
きちんと出力できた。
ちなみに、
1番との組み合わせをすることも可能であり、
こう記述することで対応可能
その際、1番のような 1929394 を出力したい場合は
エクスプレッションに $1 を
今回のように@11人x20袋 を出力したいときは
エクスプレッションに $2 を いれてやることで出力が出来る。
また、エクスプレッション内を
「$1 + $2」とすることで
$1の結果と$2の結果を足して 出力することが出来る。
#備考
正規表現の「*」とワイルドカードとしての「*」は別物である。
参考記事
(https://qiita.com/whisky-shusuky/items/d719c92c566c133f51b1)