正则表达式是一种用于匹配文本的强大工具,它可以用来搜索、替换和分析文本,也可以应用到「UI自动化中元素的定位中」。
接下来先看我们出错的代码,如下
poco("附近 第 1 个标签,共 3 个").click()
raise PocoNoSuchNodeException(self)
poco.exceptions.PocoNoSuchNodeException: Cannot find any visible node by query UIObjectProxy of "附近 第 1 个标签,共 3 个"
Path from root node: [0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 0]
Payload details:
type : android.view.View
name : 附近
第 1 个标签,共 3 个
desc : 附近
第 1 个标签,共 3 个
enabled : True
visible : True
resourceId : b''
zOrders : {'global': 0, 'local': 0}
package : b'com.ymt360.app.mass'
anchorPoint : [0.5, 0.5]
dismissable : False
checkable : False
scale : [1, 1]
boundsInParent : [0.19722222222222222, 0.05778894472361809]
focusable : True
touchable : True
longClickable : False
size : [0.19722222222222222, 0.05778894472361809]
pos : [0.31574074074074077, 0.08793969849246232]
focused : False
checked : False
editalbe : False
selected : True
scrollable : False
附近[\s\S].*
匹配以
附近
为开头的所有文字
poco(nameMatches="附近[\s\S].*").click()
在使用.
来匹配任意字符时,需要注意以下几点:
.
不能匹配换行符,如果要匹配换行符,可以使用[\s\S]
代替.
。.
只能匹配一个字符,如果要匹配多个字符,需要使用*
、+
、?
等符号。.
是一个特殊符号,如果要匹配.
本身,需要使用\.
进行转义。?
)来避免这种问题。re.IGNORECASE
标志或者在表达式中使用(?i
)进行忽略大小写匹配。.
、*
、+
等需要进行转义,否则可能导致意想不到的匹配结果。总之,正则表达式是一项强大的工具,但也需要谨慎使用。掌握好正则表达式的使用技巧和注意事项,能够让我们更高效地处理文本数据,提高工作效率。