概述
一、正则表达式元字符:
1.一些常用元字符:
元字符 | 描述 |
. | 表示任意一个字符 |
s | 空格字符(空格键、tab、换行、换页、回车) |
S | 非空字符串([^s]) |
d | 一个数字(相当于[0-9]中间的任意一个数字) |
D | 一个非数字的字符(相当于[^0-9]非0-9的任意一个字符) |
w | 一个单词字符相当于(相当于[a-z,A-Z,0-9]) |
W | 一个非单词字符[^w] |
^ | 一行的开始 |
$ | 一行的结尾 |
b | 一个单词的边界 比如说两个两个单词之间的空格就是边界 |
B | 一个非单词的边界 |
[] | 匹配方括号内的一个字符。 例如: [abc]表示字符a,b,c,中的任意一个(与a|b|c相同)。 [a-zA-z]表示从a到z或A到Z中的任意一个字符 |
2.表示次数的元字符:
元字符 | 描述 |
* | 重复零次或更多次。例如:a* 匹配零个或者多个a |
+ | 重复一次或更多次。例如:a+匹配一个或者多个a |
? | 重复零次或一次。例如:a?匹配零个或一个a |
{n} | 重复n次。例如:a{4}匹配4个a |
{n,} | 重复n次或更多次。例如:a{4,}匹配至少4个a |
{n,m} | 重复n到m次。例如:a{4,10}匹配4-10个a |
3.正则表达式中文字符匹配:
正则表达式也支持Unicode码,汉字范围可使用Unicode来表示
中文字符匹配 | 描述 |
[u4E00-u9FA5] | 汉字 |
[uFE3-uFFA0] | 全角字符 |
[^x00-xff] | 匹配双字节字符(包括汉字在内) |
二、正则表达式匹配示例:
1.普通字符串匹配:
字符串 | 模糊匹配 | 较精确匹配 |
12:12 | d+:d+ | dd:dd |
2013-10-24 星期四 | d+-d+-d+星期[u4E00-u9FA5] | d{4}-d{2}-d{2} 星期[一二三四五六 |
5:25PM | d+:d+[AP]M | d?d+:dd[AP]M |
下午4:40 | .午d:d+ | [上下]午d?d:dd |
Ip地址 | (d+.)+{3}d+ | (d?d?d.){3}d?d?d |
邮箱地址 | w@w.w | ^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+ |
2.场景字符串匹配:
文件大小 | 数字 | 单位 | 数字 |
1GB | 整数 | GB | 整数或小数 |
1KB | 小数 | MB | d+ |
500B | 空格 | KB | 单位 |
… | B | [GMK]?B | (d+|d+.d+)s?[GMK]?B |
三、正则表达式操作:
1.UiSelector涉及到字符串的搜索条件
文本条件搜索
描述条件搜索
类名条件搜索
资源ID条件搜索
2.Java文本处理操作
匹配字符串
替换字符串
提取字符串
拆分字符串
3.正则表达式相关API:
描述 | UiAutomator API |
正则文本匹配 | textMarches(regex) |
正则描述匹配 | descriptionMarches(regex) |
正则类名匹配 | classNameMarches(regex) |
正则资源ID匹配 | resourceIdMarches(regex) |
描述 | Java API |
匹配字符串 | matcher(regex) |
替换字符串 | replase(regex,input) |
提取字符串 | Matcher.group() |
拆分字符串 | split(regex) |
- 例如:
//UiAutomator public void testDemo1() throws UiObjectNotFoundException{ //文本 //正则完全匹配 UiObject object=new UiObject(new UiSelector().textMatches("电影工作室")); object.clickAndWaitForNewWindow(); UiDevice.getInstance().pressBack(); //正则匹配1 UiObject object1=new UiObject(new UiSelector().textMatches("电影.*")); object1.clickAndWaitForNewWindow(); UiDevice.getInstance().pressBack(); //正则匹配2 UiObject object2=new UiObject(new UiSelector().textMatches(".*工作室")); object2.clickAndWaitForNewWindow(); UiDevice.getInstance().pressBack(); //正则匹配3 UiObject object3=new UiObject(new UiSelector().textMatches(".*工作.*")); object3.clickAndWaitForNewWindow(); UiDevice.getInstance().pressBack(); //类名正则匹配 UiObject object4=new UiObject(new UiSelector().classNameMatches(".*TextView").index(3)); object4.clickAndWaitForNewWindow(); UiDevice.getInstance().pressBack(); //描述正则匹配 UiObject object5=new UiObject(new UiSelector().descriptionMatches(".*部件")); UiObject object6=new UiObject(new UiSelector().descriptionMatches("应.*")); object5.clickAndWaitForNewWindow(); object6.clickAndWaitForNewWindow(); //资源ID正则匹配 UiObject object7=new UiObject(new UiSelector().resourceIdMatches(".*analog_appwidget")); object7.clickAndWaitForNewWindow(); UiDevice.getInstance().pressBack(); }
//JAVA public static void main(String[] args){ //匹配 String s="789655dsa456kdsaaa951afd"; System.out.println(s.matches(".*aaa.*")); //替换 a--b String r=s.replaceAll("a", "b"); System.out.println(r); String q=s.replaceAll("\d", "b"); System.out.println(q); String a=s.replaceAll("\w", "b"); System.out.println(a); //提取 Pattern rp=Pattern.compile("\d+"); Matcher m=rp.matcher(s); while (m.find()){ System.out.println(m.group()); } //分割 String [] sp=s.split("\d+"); for(int i=0;i<sp.length;i++){ System.out.println(sp[i]); } }
四、正则表达式实例:
//实例一:初始化界面 public void testDemo1() throws UiObjectNotFoundException{ UiDevice.getInstance().pressBack(); UiDevice.getInstance().pressBack(); UiDevice.getInstance().pressHome(); //兼容多语言 //点击联系人 UiObject persion=new UiObject(new UiSelector().textMatches("联系人|People"));//中文或英文 persion.clickAndWaitForNewWindow(); //点击添加 UiObject add=new UiObject(new UiSelector().descriptionMatches("添加联系人|Add\sContact")); add.clickAndWaitForNewWindow(); //获取姓名和输入框和完成按钮 UiObject name=new UiObject(new UiSelector().classNameMatches(".*EditText").text("姓名|Name")); UiObject phone=new UiObject(new UiSelector().classNameMatches(".*EditText").text("电话|Phone")); UiObject done=new UiObject(new UiSelector().text("完成|Done")); //输入姓名电话后点击完成 String nameStr="Jian"+new Random().nextInt(100); name.setText(nameStr); phone.setText("123456789"); done.clickAndWaitForNewWindow(); //判断创建是否成功 assertTrue(new UiObject(new UiSelector().textMatches(nameStr)).exists()); }
//实例二: public void testDemo2() throws UiObjectNotFoundException{ //同种类型的对话框按钮 clickDialog(false); } public void clickDialog(boolean yn) throws UiObjectNotFoundException{ UiObject y=new UiObject(new UiSelector().textMatches("是|确认|确定|Y|OK")); UiObject n=new UiObject(new UiSelector().textMatches("否|同意|取消|N|Cancel")); if(yn){ try { y.click(); } catch (UiObjectNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } }else{ n.click(); } }
最后
以上就是细心日记本为你收集整理的十二、Android UiAutomator正则表达式的使用的全部内容,希望文章能够帮你解决十二、Android UiAutomator正则表达式的使用所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复