ここから本文です

pythonの文字列検索で、 計算式の文字列 "math.sqrt(s*(s-syahen1)*(s-syahen2)*(...

chi********さん

2018/7/2105:37:13

pythonの文字列検索で、
計算式の文字列 "math.sqrt(s*(s-syahen1)*(s-syahen2)*(s-teihen))+math.log1p(0)" から、

関数名と変数名のみ検索 ['sqrt', 's', 's', 'syahen1', 's', 'syahen2', 's', 'teihen', 'log1p'] したいです。
どうしても文字列 'math' も一緒に検索されてしまいます。

正規表現で、(?<=math.)* という書き方はできないのでしょうか?
よろしくお願いします。

1:import re
2:
3:str1 = "math.sqrt(s*(s-syahen1)*(s-syahen2)*(s-teihen))+math.log1p(0)"
4:
5:ptn=r'[a-z]+\d*[a-z]*'
6:Hensulst = re.findall(ptn, str1)
7:print(Hensulst)
8:
9:ptn=r'(?<=math.)[a-z]+\d*[a-z]*'
10:Hensulst = re.findall(ptn, str1)
11:print(Hensulst)
12:
13:ptn=r'(?<=math.)*[a-z]+\d*[a-z]*'
14:Hensulst = re.findall(ptn, str1)
15:print(Hensulst)

実行結果
['math', 'sqrt', 's', 's', 'syahen1', 's', 'syahen2', 's', 'teihen', 'math', 'log1p']
['sqrt', 'log1p']
['math', 'sqrt', 's', 's', 'syahen1', 's', 'syahen2', 's', 'teihen', 'math', 'log1p']

閲覧数:
21
回答数:
1
お礼:
25枚

違反報告

ベストアンサーに選ばれた回答

meg********さん

2018/7/2107:56:42

期待する回答ではないでしょうけど。

最初に "match." を文字列から置換で消してしまって、それから正規表現で分割するのはダメなのでしょうか?

  • 質問者

    chi********さん

    2018/7/2108:25:21

    (実は解決できなくて、今そうしてます・・・)
    回答ありがとうございます。

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

質問した人からのコメント

2018/7/25 08:40:46

ありがとうございました

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる