`UiSelector.textMatches(reg)` 完全失效
- Autox.js 版本:6.3.4
- Autox.js 下载渠道:https://github.com/kkevsekk1/AutoX/releases
- Android 版本:Android 10
- Android 机型:Readmi Note 7
- Android 系统类别:MIUI 12.5.7
- VSCODE Autox.js 扩展版本(可选,如果是连接电脑的问题需要填):
- 问题描述:
UiSelector.textMatches(reg)不能按文档描述和我的预期工作 - 报错日志(可选):见下文
- 屏幕截图(可选):无
console.log("text", selector().textContains("MIUI").findOne(0x800));
console.log("RegExp", selector().textMatches(/MIUI/).findOne(0x800));
console.log("RegExp source", selector().textMatches("MIUI").findOne(0x800));
console.log("text", selector().textContains("MIUI").findOne(0x800));
02:48:20.333/D: text com.stardust.automator.UiObject@12f58; boundsInParent: Rect(0, 0 - 177, 85); boundsInScreen: Rect(783, 803 - 960, 888); packageName: com.android.settings; className: android.widget.TextView; text: MIUI 12.5.7; contentDescription: null; viewId: miui:id/value_right; checkable: false; checked: false; focusable: false; focused: false; selected: false; clickable: false; longClickable: false; enabled: true; password: false; scrollable: false; [ACTION_SELECT, ACTION_CLEAR_SELECTION, ACTION_ACCESSIBILITY_FOCUS, ACTION_NEXT_AT_MOVEMENT_GRANULARITY, ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY, ACTION_SET_SELECTION, ACTION_SHOW_ON_SCREEN]
02:48:22.424/D: RegExp null
02:48:24.485/D: RegExp source null
02:48:24.493/D: text com.stardust.automator.UiObject@12f58; boundsInParent: Rect(0, 0 - 177, 85); boundsInScreen: Rect(783, 803 - 960, 888); packageName: com.android.settings; className: android.widget.TextView; text: MIUI 12.5.7; contentDescription: null; viewId: miui:id/value_right; checkable: false; checked: false; focusable: false; focused: false; selected: false; clickable: false; longClickable: false; enabled: true; password: false; scrollable: false; [ACTION_SELECT, ACTION_CLEAR_SELECTION, ACTION_ACCESSIBILITY_FOCUS, ACTION_NEXT_AT_MOVEMENT_GRANULARITY, ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY, ACTION_SET_SELECTION, ACTION_SHOW_ON_SCREEN]
看起来该函数完全无法工作,调整超时时间后依然无效
正则写法错误
正则写法错误
不,语法无误。
另,javascript语言支持的两种语法格式都尝试过了,.textMatches("MIUI") 和 selector().textMatches(/MIUI/) 都无法工作。
目前我的替代方案是:selector().filter(obj => /MIUI/.test(obj.text())),一切正常。
textMatches("/."+content+"./").findOne()
发送自我的盖乐世
-------- 原始信息 --------
发件人: 刘祺 @.>
日期: 2022/9/17 03:18 (GMT+08:00)
收件人: kkevsekk1/AutoX @.>
抄送: Subscribed @.***>
主题: Re: [kkevsekk1/AutoX] UiSelector.textMatches(reg) 完全失效 (Issue #430)
正则写法错误
不,语法无误。
另,javascript语言支持的两种语法格式都尝试过了,.textMatches("MIUI") 和 selector().textMatches(/MIUI/) 都无法工作。
目前我的替代方案是:selector().filter(obj => /MIUI/.test(obj.text())),一切正常。
― Reply to this email directly, view it on GitHubhttps://github.com/kkevsekk1/AutoX/issues/430#issuecomment-1249719480, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AD64RCE2AVXTIIAQIJ43S5TV6TBZ5ANCNFSM6AAAAAAQMV4FSM. You are receiving this because you are subscribed to this thread.Message ID: @.***>
textMatches("/."+content+"./").findOne() 发送自我的盖乐世
有没有考虑过直接修改textMatches的实现方式,让用户可以直接使用JS原生的RegExp对象或者正则字面量,而非用字符串方式去模拟?目前的实现方式,文档和实际情况对不上,文档中写明了是支持{RegExp}数据类型的,实际却不支持。
textMatches(/MIUI/)==text(“MIUI“);完全匹配 textMatches(/.×MIUI.×/)==textContains("MIUI");部分匹配,包含 (英文的星号打不出来,用×代替了) 你自己搞错了。
这是语法问题,看说明有介绍
发送自我的盖乐世
-------- 原始信息 --------
发件人: 刘祺 @.>
日期: 2022/9/15 02:40 (GMT+08:00)
收件人: kkevsekk1/AutoX @.>
抄送: Subscribed @.***>
主题: [kkevsekk1/AutoX] UiSelector.textMatches(reg) 完全失效 (Issue #430)
- Autox.js 版本:6.3.4
- Autox.js 下载渠道:https://github.com/kkevsekk1/AutoX/releases
- Android 版本:Android 10
- Android 机型:Readmi Note 7
- Android 系统类别:MIUI 12.5.7
- VSCODE Autox.js 扩展版本(可选,如果是连接电脑的问题需要填):
- 问题描述:UiSelector.textMatches(reg) 不能按文档描述和我的预期工作
- 报错日志(可选):见下文
- 屏幕截图(可选):无
console.log("RegExp", selector().textMatches(/MIUI/).findOne(0x800));
console.log("RegExp source", selector().textMatches("MIUI").findOne(0x800));
console.log("text", selector().textContains("MIUI").findOne(0x800));
02:36:50.015/D: 正在启动“设置”,“com.android.settings”
02:36:52.718/D: RegExp null
02:36:54.775/D: RegExp source null
02:36:54.783/D: text @.***; boundsInParent: Rect(0, 0 - 177, 85); boundsInScreen: Rect(783, 803 - 960, 888); packageName: com.android.settings; className: android.widget.TextView; text: MIUI 12.5.7; contentDescription: null; viewId: miui:id/value_right; checkable: false; checked: false; focusable: false; focused: false; selected: false; clickable: false; longClickable: false; enabled: true; password: false; scrollable: false; [ACTION_SELECT, ACTION_CLEAR_SELECTION, ACTION_ACCESSIBILITY_FOCUS, ACTION_NEXT_AT_MOVEMENT_GRANULARITY, ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY, ACTION_SET_SELECTION, ACTION_SHOW_ON_SCREEN]
看起来该函数完全无法工作,调整超时时间后依然无效
― Reply to this email directly, view it on GitHubhttps://github.com/kkevsekk1/AutoX/issues/430, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AD64RCAWOI7TFNDWZASLX5TV6IL3DANCNFSM6AAAAAAQMV4FSM. You are receiving this because you are subscribed to this thread.Message ID: @.***>
textMatches(/MIUI/)==text(“MIUI“);完全匹配 textMatches(/.×MIUI.×/)==textContains("MIUI");部分匹配,包含 (英文的星号打不出来,用×代替了) 你自己搞错了。
并不是,搞错了语法的是你。在js的正则语法中,全文匹配的语法需要加修饰^和$也就是:
/^MIUI$/
这一点我们无需争辩,打开浏览器,按F12在控制台里试试,一分钟就能得出正确结论,我们在此做口舌之争毫无意义。

难道我们学的正则不一样??
^ == 匹配字符串的开始 $ == 匹配字符串的结束
我觉得这帖子完结了。去看看正则吧。
难道我们学的正则不一样??
^ == 匹配字符串的开始 $ == 匹配字符串的结束
我觉得这帖子完结了。去看看正则吧。
请仔细阅读一楼的代码,出问题的代码使用的是非完全匹配的正则语法(/MIUI/),代码的意图也是非完全匹配,但textMatches()的匹配结果却是空的,我实在理解不了这个项目的参与者是怎么回事,都是自大狂吗?
明明是1分钟就能验证的bug,非要说是用户的语法错误,@kkevsekk1 @kkevsekk1,你们宁愿花一个多月的时间撕逼,却不愿正常好好沟通解决问题。。。。。。。
我不知道@TKWei 是谁,而且他也不是这个项目的维护者
况且目前这个项目没人维护
这底层实现是这样,按照规则,说明文档的规则,写就完事,看着不爽你可以再封装几个api出来,这些都是完全可行的!
发送自我的盖乐世
-------- 原始信息 --------
发件人: 刘祺 @.>
日期: 2022/10/25 02:05 (GMT+08:00)
收件人: kkevsekk1/AutoX @.>
抄送: aaron @.>, Mention @.>
主题: Re: [kkevsekk1/AutoX] UiSelector.textMatches(reg) 完全失效 (Issue #430)
难道我们学的正则不一样??
^ == 匹配字符串的开始 $ == 匹配字符串的结束
我觉得这帖子完结了。去看看正则吧。
请仔细阅读一楼的代码,出问题的代码使用的是非完全匹配的正则语法(/MIUI/),代码的意图也是非完全匹配,但textMatches()的匹配结果却是空的,我实在理解不了这个项目的参与者是怎么回事,都是自大狂吗? @.***https://github.com/TKWei @kkevsekk1https://github.com/kkevsekk1,你们宁愿花一个多月的时间撕逼,却不愿正常好好沟通解决问题。。。。。。。
― Reply to this email directly, view it on GitHubhttps://github.com/kkevsekk1/AutoX/issues/430#issuecomment-1289398993, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AD64RCGVVVB5V6KXJLEWIXTWE3FV7ANCNFSM6AAAAAAQMV4FSM. You are receiving this because you were mentioned.Message ID: @.***>
程序员最大的成就感就是我觉得这个东西不爽,我觉得这个软件不爽,我可以改变它。而在现实生活中,你几乎只能去适应这个事情。很难做到你去改变世界。
发送自我的盖乐世
-------- 原始信息 --------
发件人: 刘祺 @.>
日期: 2022/10/25 02:05 (GMT+08:00)
收件人: kkevsekk1/AutoX @.>
抄送: aaron @.>, Mention @.>
主题: Re: [kkevsekk1/AutoX] UiSelector.textMatches(reg) 完全失效 (Issue #430)
难道我们学的正则不一样??
^ == 匹配字符串的开始 $ == 匹配字符串的结束
我觉得这帖子完结了。去看看正则吧。
请仔细阅读一楼的代码,出问题的代码使用的是非完全匹配的正则语法(/MIUI/),代码的意图也是非完全匹配,但textMatches()的匹配结果却是空的,我实在理解不了这个项目的参与者是怎么回事,都是自大狂吗? @.***https://github.com/TKWei @kkevsekk1https://github.com/kkevsekk1,你们宁愿花一个多月的时间撕逼,却不愿正常好好沟通解决问题。。。。。。。
― Reply to this email directly, view it on GitHubhttps://github.com/kkevsekk1/AutoX/issues/430#issuecomment-1289398993, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AD64RCGVVVB5V6KXJLEWIXTWE3FV7ANCNFSM6AAAAAAQMV4FSM. You are receiving this because you were mentioned.Message ID: @.***>
666 果然有人和我遇到一样的问题,JS 中的正则怎么都匹配不上,原来是语法不一样啊,JS 确实不写 ^$ 就可以直接匹配中间内容的,但 autojs 里就是不行
此lssue由于长期未活动已被自动关闭,如问题任然存在,请重新打开lssue