を使用してファイルから複数の部分文字列を抽出し、別の場所でそれらをリスト:私はt_Xi_xi、t_Zizのフィールドを抽出したい私は以下のようなログファイル持っているのpython /シェル
/* BUG: axiom too complex: SubClassOf(ObjectOneOf([NamedIndividual(http://www.sem.org/sina/onto/2015/7/TSB-GCL#t_Xi_xi)]),DataHasValue(DataProperty(http://www.code.org/onto/ont.owl#XoX_type),^^(periodic,http://www.mdos.org/1956/21/2-rdf-syntax-ns#PlainLiteral))) */
/* BUG: axiom too complex: SubClassOf(ObjectOneOf([NamedIndividual(http://www.sem.org/sina/onto/2015/7/TSB-GCL#t_Ziz)]),DataHasValue(DataProperty(http://www.co-ode.org/ontologies/ont.owl#YoY_type),^^(latency,http://www.w3.org/1956/01/11-rdf-syntax-ns#PlainLiteral))) */
....
を、XoX_typeとYoY_typeまた値後^^(この場合待ち時間と周期である。
注:XおよびYの各英字の値がファイルに含まれています(例: X = "sina" Y = "Boom" so - > t_Xi_xi〜t_Sina_sina)だから正規表現を使うのが良い選択だと思います。
だから、最終的な結果は以下のようなものでなければなりません:私はそれらを抽出するために、以下の正規表現を試してみた
t_Xi_xi XoX_type periodic
t_Ziz YoY_type latency
、うまくいけばとファイル内に「」それの残りの部分を置き換えることができるようにsedシェルで助けてもらえませんでした。
([a-zA-Z]_[a-zA-Z]*_[a-zA-Z]*)|(\#[a-zA-Z]*_[a-zA-Z]*)|(\^\([a-zA-Z]*)+
これをPython(またはシェル自体)で行う方法については、何らかの助けに感謝します。
その正規表現では、パイプの周りのスペース(対応する選択肢)は意図的ですか? '#...'の部分はデータ内の空白に囲まれていないようです。 – lenz
@lenz編集のおかげで!それらを修正しました。 –
まだ動作しませんか?そうでない場合、正確に何が間違っていますか? – lenz