python - ^ 在 python 中不表示行的开头

标签 python

我有一个文件starts_X,如下所示:

X-hello
X-hello I am j
nX-h
X-
X-hi

我尝试提取以 X 开头的行。所以我运行了

import re
fhandle=open("starts_X")
for line in fhandle:
  if re.search("^X.*",line):
    print(line.rstrip())

得到了

X-hello
X-hello I am j
X-
X-hi

但是,当我在没有 . 的情况下运行它时,如下所示:

import re
fhandle=open("starts_X")
for line in fhandle:
  if re.search("^X*",line):
    print(line.rstrip())

返回

X-hello
X-hello I am j
nX-h
X-
X-hi

我了解到 . 匹配任何字符。我认为 "^X.*" 表示“以 X 开头,后跟任何一个或多个字符”,而“^X*”表示“以 X 开头,后跟零个或多个字符”。 这里有什么问题吗?谢谢。

最佳答案

* 表示零个或多个符号,因此当您将其放在 X 之后时,您的意思是该行以零个或多次出现的 X 开头,这对于所有行都是如此。

关于python - ^ 在 python 中不表示行的开头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53790247/

相关文章:

Python3正则表达式转义函数

python - 基于多种模型的Django Form

python - Apache Airflow UI 显示 DAG 导入错误(IndexError : list index out of range) But DAG works fine

python - 通过从存储的 turtle 图形函数列表中随机选择来创建随机路径

python - docopt 的选项多样性

python - Python 中使用逻辑运算符的赋值运算符

python - wxpython:EVT_GRID_CELL_CHANGED 问题

Python (3.7) CSV 按字段值排序/求和

python - 'module' 对象没有属性 'views' django 错误

python - 使用 Dash Cytoscape 在回调中更改节点的标签