m0_75271072 2022-12-17 20:13 采纳率: 50%
浏览 20
已结题

Python正则表达式中遇到的问题

问题遇到的现象和发生背景

是在正则表达式的第一步遇到的

遇到的现象和发生背景,请写出第一个错误信息

Traceback (most recent call last):
  File "F:\dragon\rago.py", line 18, in <module>
    print(ling.string)
          ^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'string'

用代码块功能插入代码,请勿粘贴截图。 不用代码块回答率下降 50%
import re
patt = '''1.犀牛坦克
犀牛坦克是苏军阵营最基础的坦克单位,价格也不算太贵,花费900块钱就能造出一辆。但是人家的战斗力很强。如果来一场1V1单挑对决的话,犀牛坦克能够完胜灰熊坦克和狂风坦克,赢得真是轻轻松松。在对付小兵时,犀牛只需要碾压过去就可,这种打法可以用简单粗暴来形容。只要数量够了,犀牛坦克也可快速摧毁对方建筑。最重要的是这个单位在游戏前期就能出了,因此很多玩家都喜欢玩一手犀牛海的战术,上来就攒钱爆犀牛,一波推平对方基地。
2.工程师
个人感觉,在游戏中工程师是最被低估的兵种了,虽然说他没有任何战斗力了,但是人家的用途是相当广泛的,首先工程师能够修理损坏的建筑,而且是一秒钟就能修好,不管建筑破损的有多严重,工程师一进去直接变成满血状态,其次工程师还能占据敌方建筑,同样是一秒钟完成,然后玩家转手一卖即可。只要敌方的建筑物全被占据了,这局游戏也就结束了。除此之外,工程师还能修桥梁,进入多功能步兵车还能修坦克。
3.美国大兵
美国大兵算是盟军阵营的特色兵种了,制造成本也很便宜,200块钱就能生产出一个。如果你占据了飞机场,就可以得到源源不断的伞兵。美国大兵总共有两种形态,站着的时候,攻击力一般,只能用手枪来对付敌人。可是当你部署之后,大兵的战斗力就倍增了,它可以用机枪来攻击地面上的任何单位,不管是打小兵、坦克、还是建筑物,其效果都非常的好。升到三星之后,大兵的射程和攻击力也倍增,只要玩家部署一下,一个三星大兵能单挑一座磁暴线圈。
4.火箭飞行兵
火箭飞行兵是盟军阵营中最厉害的空中单位了,有的玩家喜欢拿它和入侵者战机、基洛夫、夜莺直升飞机等单位相比,对此小编认为,完全没有可比性,毕竟以上这些单位都是需要科技支撑才能造出来的产物。尽管火箭飞行兵单体作战并不厉害,但是只要数量够了,战斗力很快就显现出来,甚至可以顶着防空去拆家。因此很多玩家喜欢用火箭飞行兵搞一手偷袭,要不偷袭你主基地,要不偷袭你矿车。
5.多功能步兵车
谈起多功能步兵车,想必大家都很熟悉了,这是盟军最好用的兵种之一,首先它的防空效果很好,升到三星之后,打出来的导弹会产生爆炸效果,伤害很高。其次只要小兵进入多功能步兵车里,这个单位就会拥有小兵的攻击属性了,比如说把磁暴步兵放进去,多功能车秒变磁能坦克,把疯狂的疑问放进去,多功能车秒变自爆卡车。当然战斗要塞也有这样的属性,而且还能放进五个人,可惜的是造价太贵,没有多功能车省钱。
6.武装矿车 
说实话,苏军阵营的矿车是真滴好用啊,采矿采的多,黄金矿全部装满,一次可赚一千块,彩色矿全部装满,一次可赚两千块,关键是人家的防御很高,即使用核弹炸都爆不了,自带的机枪又能攻击周围的敌人,几个小兵过来真是拿它一点办法都没有,升到三星之后,武矿的攻击方式秒变成炮击。用来对付尤里真的是非常合适。
7.尤里
在游戏中,尤里算是比较bug的兵种了,一秒钟即可转化敌方的作战单位,简直是不费吹灰之力。关键是对于盟军和苏军来说,不能被转化的单位是少之又少,因此尤里自然就显得比较厉害了。在资料片尤里复仇中,尤里X更为厉害,人家直接能转化建筑物,这个能力要比工程师还要厉害。'''
pat = r'犀牛坦克.+?'
ling = re.match(pat, patt,re.S)
print(ling.string)
print(ling.span())

运行结果及详细报错内容
Traceback (most recent call last):
  File "F:\dragon\rago.py", line 18, in <module>
    print(ling.string)
          ^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'string'

我的解答思路和尝试过的方法,不写自己思路的,回答率下降 60%

报错内如如下,不确定这个是表达式的哪里写错了

我想要达到的结果,如果你需要快速回答,请尝试 “付费悬赏”
  • 写回答

2条回答 默认 最新

  • ShowMeAI 2022-12-17 20:50
    关注

    一方面,你的正则表达式里的问号用的中文的,要改成英文问号哦。另外一方面,不要用match,用search

    pat = r'犀牛坦克.+?'
    ling = re.search(pat, patt,re.S)
    print(ling.string)
    print(ling.span())
    

    试一下吧,望采纳

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 12月28日
  • 已采纳回答 12月20日
  • 修改了问题 12月17日
  • 创建了问题 12月17日

悬赏问题

  • ¥15 为什么视频算法现在全是动作识别?
  • ¥15 编写一段matlab代码
  • ¥15 用Python做岩石类别鉴定软件
  • ¥15 关于调取、提交更新数据库记录的问题
  • ¥15 之前删了盘从下vs2022遇见这个问题 搞了一整天了
  • ¥15 从Freecad中宏下载的DesignSPHysics,出现如下问题是什么原因导致的(语言-python)
  • ¥30 notepad++ 自定义代码补全提示
  • ¥15 MATLAB有限差分法解一维边值问题
  • ¥200 内网渗透测试 横向渗透 Windows漏洞 Windows权限维持
  • ¥15 数据结构图的相关代码实现