regexpを使用し​てテキストから指定の​ルールに従う”小文字​”の文字列を抜き出す​方法について

基本的な質問で恐縮なのですが,下記教えていただけると幸いです
下記のようなスクリプトを組んだとします
expression = {'AA_\w*'};
matchStr = regexp(text, expression,'match'}・・・①
ここでtextは既にWorkspaceに読み込んだテキストだと思ってください(char型です)
このように記述したときに,AA_に続く文字が大文字でも小文字でも抜き出してしまうと思うのですが,
AA_に続くものを小文字の文字列に限定したい場合,①の記述をどのようにかえればよろしいでしょうか
よろしくお願いいたします.

 Respuesta aceptada

Atsushi Ueno
Atsushi Ueno el 21 de Abr. de 2022

1 voto

% \w は [a-zA-Z_0-9] と等価です。
という事でメタ文字\wには大文字/小文字の区別が無いので、長くなりますが自分で書く必要がありそうです。
expression = {'AA_[a-z_0-9]*'};

3 comentarios

浩祐 佐々木
浩祐 佐々木 el 25 de Abr. de 2022
Atsushi Uenoさん,
早急にご回答くださりありがとうございます.
遅くなってしまいましたが,トライしました.
結果大文字の抽出は防げるようになりました.
一方で,
AA_
のように後ろに何も文字が続かないものをリストアップしてしまうようになりました.
恐れ入りますが,こちらの対処をもしご存じでしたら,ご教授いただけませんでしょうか.
Atsushi Ueno
Atsushi Ueno el 25 de Abr. de 2022
expression = {'AA_\w*'};
のメタ文字\wを[a-z_0-9]に変更して
expression = {'AA_[a-z_0-9]*'};
としたので、大文字を拾わなくなる以外の仕様は元から変わっていないはずです。
expression = {'AA_[a-z_0-9]+'};
と量指定子の*(0 回以上の繰り返し)を+(1 回以上の繰り返し)に変更すれば、”AA_”のように後ろに何も文字が続かないものをリストアップしなくなります。
浩祐 佐々木
浩祐 佐々木 el 25 de Abr. de 2022
Atsuhi Uenoさん,
再度のご回答ありがとうございます.
下記の通りと私も思うのですが,なぜか前者では出ず,後者では出るという現象でした.
とはいえ,ご教示いただいた量指定の方法で解決できました.
ありがとうございます.*は0回以上の繰り返しの量指定子というのも知らず勉強になりました.
ありがとうございます.
expression = {'AA_\w*'};
のメタ文字\w[a-z_0-9]に変更して
expression = {'AA_[a-z_0-9]*'};
としたので、大文字を拾わなくなる以外の仕様は元から変わっていないはずです。

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre 文字と文字列 en Centro de ayuda y File Exchange.

Productos

Versión

R2015a

Etiquetas

Preguntada:

el 21 de Abr. de 2022

Comentada:

el 25 de Abr. de 2022

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!