メソッドを表すテキストから戻り値を抽出します。例えばSqueak(Smalltalk)での戻り値の抽出
:
g: x and: y
Transcript show: x; show: y.
^x+y.
はので、私は正規表現を使用解決するために:
\^\s*(\w+.*).
を私はいくつかの正規表現のウェブサイト上でこれを実行すると、例えば、私が欲しいものを仕事とやっているようです:https://regex101.com/
しかし、次のプログラムを実行すると、squeakはnil
(一致するものは見つかりません)を返します。私は文字が^
を使用しているためと思われます。
が、私はそれが動作するように失敗している理由は分からないので、私はその文字をエスケープ。
私はそれをテストするために使用されるコード:
|aString regexObj |
aString := 'g: x and: y
Transcript show: x; show: y.
^x+y.'.
regexObj := '\^\s*(\w+.*).' asRegex.
regexObj matches: aString.
returnedType:= (regexObj subexpression:2).
Transcript show: returnedType.
誰もが知っている、なぜ、どのようにそれを解決するために?
ありがとうございました。
Aviad、なぜサブ表現* 2 *にアクセスしようとしましたか?キャプチャグループは1つしかないので、 '(regexObj subexpression:1) 'にする必要があります。 –
あなたがやろうとしていることによっては、ASTを生成してリターンノードにアクセスする方が簡単かもしれません。例えば。 '(MyClass >>#myMethod)parseTree nodesDo:[:node | ...] '(テストされていない)。 –
@WiktorStribiżewいくつかの側のテストから、ドキュメントを読むことによって、サブ式1はあなたに全体の一致を与え、サブ式2はあなたに括弧内のグループを与えます。 ドキュメント:[リンク](https://ci.inria.fr/pharo-contribution/job/UpdatedPharoByExample/lastSuccessfulBuild/artifact/book-result/Regex/Regex.html) –