Python 正则表达式查找后跟空格或(

Python 正则表达式查找后跟空格或(,python,regex,Python,Regex,我正在尝试从下面的sample.log中提取一些单词(如expected output中所示)。我在提取最后一个预期输出(即xuvs)时遇到困难。代码可以提取除最后一个之外的所有输出。我正在尝试找到如何将regex编码为“查找后跟空格的文本或(”。任何指向其他方法的指针都将不胜感激 sample.log for (i=0; i< models; i = i+1) begin:modelgen model_ip model_inst ( .model_power

我正在尝试从下面的sample.log中提取一些单词(如expected output中所示)。我在提取最后一个预期输出(即xuvs)时遇到困难。代码可以提取除最后一个之外的所有输出。我正在尝试找到如何将regex编码为“查找后跟空格的文本或(”。任何指向其他方法的指针都将不胜感激

sample.log

  for (i=0; i< models; i = i+1) begin:modelgen

 model_ip model_inst
     (
      .model_powerdown(model_powerdown),
      .mcg(model_powerdown),
      .lambda(_lambda[i])
      );
  assign fnl_verifier_lock = (tx_ready & rx_ready) ? &verifier_lock :1'b0;

native_my_ip native_my_inst
 (
  .tx_analogreset(tx_analogreset),
 //.unused_tx_parallel_data({1536{1'b0}})

  );

// END Section I

resync
 #(
   .INIT_VALUE (1)
   ) inst_reset_sync
   (
.clk    (tx_coreclkin),
.reset  (!tx_ready), // tx_digitalreset from reset
.d      (1'b0),
.q      (srst_tx_common  )
);

har HA2  (fs, ha, lf, c);                  

#need to extract xuvs
xuvs or1(fcarry_out, half_carry_2, half_carry_1);
code.py

import re

input_file = open("sample.log", "r")
lines = input_file.read()   # reads all lines and store into a variable
input_file.close()
for m in re.finditer(r'^\s*([a-zA-Z_0-9]+)\s+([a-zA-Z_0-9]+\s+\(|#\()',   lines, re.MULTILINE):
   print m.group(1)

您需要匹配
)前面的任何可选空格字符:

请参阅。可以将
[a-zA-Z0-9.]
缩短为
\w
(如果需要在Python 3中使用它,并且只匹配ASCII字母和数字,请使用
re.ASCII
标志进行编译)

详细信息

  • ^
    -行的开头(因为使用了
    re.MULTILINE
  • \s*
    -0+空格
  • (\w+)
    -第1组:一个或多个字母、数字或
  • \s+
    -1+空格
  • (\w+|#)
    -第2组:一个或多个字母、数字或
  • \s*
    -0+空格
  • \(
    -a
    字符)
:

输出:

model_ip
native_my_ip
resync
har
xuvs

您需要匹配
)前面的任何可选空格字符:

请参阅。可以将
[a-zA-Z0-9.]
缩短为
\w
(如果需要在Python 3中使用它,并且只匹配ASCII字母和数字,请使用
re.ASCII
标志进行编译)

详细信息

  • ^
    -行的开头(因为使用了
    re.MULTILINE
  • \s*
    -0+空格
  • (\w+)
    -第1组:一个或多个字母、数字或
  • \s+
    -1+空格
  • (\w+|#)
    -第2组:一个或多个字母、数字或
  • \s*
    -0+空格
  • \(
    -a
    字符)
:

输出:

model_ip
native_my_ip
resync
har
xuvs

(<代码> >代码> >请参阅<代码> ^ \s*(\W+)\s*(\/COD>,请参阅)(谢谢)。请考虑“投票/接受”。更改<代码> \s+(<代码> >代码> \**(< /代码>参见)。此外,请考虑<代码> ^ s*(\W+)s+(\W+^α)\s*\(< /代码>,见())。更改<代码>谢谢你们。如果我的答案对你们有用,请考虑接受/接受。
for m in re.finditer(r'^\s*(\w+)\s+(\w+|#)\s*\(',   lines, re.MULTILINE):
    print m.group(1)
model_ip
native_my_ip
resync
har
xuvs