java jregex patten无法提取特殊字符

时间:2019-05-29 13:57:35

标签: java regex

我正在尝试使用正则表达式替换字符串 我基本上需要的是转换类似赋值的代码:

k*=i

进入

k=k+i

在我的示例中:

jregex.Pattern p=new jregex.Pattern("([a-z]|[A-Z])([a-z]|[A-Z]|\\d)*[\\+|\\*|\\-|\\/][=]([a-z]|[A-Z])*([a-z]|[A-Z]|\\d)");
Replacer r= new Replacer(p,"1=$1,2=$2,3=$3,4=$4,5=$5,6=$6,7=$7,8=$8");
String result=r.replace("k*=i");

无论如何,正则表达式似乎没有提取特殊字符

(在此示例中:+,-,*,/,=)

所以我得到的结果是

1=k,2=,3=,4=i,5=,6=,7=,8=

(我只能提取k&i)

你能建议吗?

2 个答案:

答案 0 :(得分:0)

您可以使用3个捕获组并在一个字符类中捕获* + /-。

([a-zA-Z])([*+/-])=([a-zA-Z])

这将匹配:

  • ([a-zA-Z])捕获第1组,匹配a-z A-Z
  • ([*+/-])捕获第2组,匹配* + /--
  • =字面上匹配
  • ([a-zA-Z])捕获第3组,匹配a-z A-Z

Regex demo | Java demo

并替换为:

$1=$1$2$3

答案 1 :(得分:0)

在这里,我们可以将表达式设计为类似于:

onView(withResourceName("res-name")).perform(click());

我们在开始和结束时使用以下两个捕获组来捕获// change res-name to buttonPanel, button3, button2, or button1 +---->ScrollView{id=16908757, res-name=buttonPanel, visibility=VISIBLE, width=1008, height=217, has-focus=false, has-focusable=true, has-window-focus=true, is-clickable=false, is-enabled=true, is-focused=false, is-focusable=true, is-layout-requested=false, is-selected=false, root-is-layout-requested=false, has-input-connection=false, x=0.0, y=1507.0, child-count=1} | +----->ButtonBarLayout{id=-1, visibility=VISIBLE, width=1008, height=217, has-focus=false, has-focusable=true, has-window-focus=true, is-clickable=false, is-enabled=true, is-focused=false, is-focusable=false, is-layout-requested=false, is-selected=false, root-is-layout-requested=false, has-input-connection=false, x=0.0, y=0.0, child-count=4} | +------>AppCompatButton{id=16908315, res-name=button3, visibility=GONE, width=0, height=0, has-focus=false, has-focusable=false, has-window-focus=true, is-clickable=true, is-enabled=true, is-focused=false, is-focusable=true, is-layout-requested=true, is-selected=false, root-is-layout-requested=false, has-input-connection=false, x=0.0, y=0.0, text=, input-type=0, ime-target=false, has-links=false} | +------>Space{id=16909293, res-name=spacer, visibility=INVISIBLE, width=429, height=0, has-focus=false, has-focusable=false, has-window-focus=true, is-clickable=false, is-enabled=true, is-focused=false, is-focusable=false, is-layout-requested=false, is-selected=false, root-is-layout-requested=false, has-input-connection=false, x=42.0, y=203.0} | +------>AppCompatButton{id=16908314, res-name=button2, visibility=VISIBLE, width=271, height=189, has-focus=false, has-focusable=true, has-window-focus=true, is-clickable=true, is-enabled=true, is-focused=false, is-focusable=true, is-layout-requested=false, is-selected=false, root-is-layout-requested=false, has-input-connection=false, x=471.0, y=14.0, text=Cancel, input-type=0, ime-target=false, has-links=false} | +------>AppCompatButton{id=16908313, res-name=button1, visibility=VISIBLE, width=224, height=189, has-focus=false, has-focusable=true, has-window-focus=true, is-clickable=true, is-enabled=true, is-focused=false, is-focusable=true, is-layout-requested=false, is-selected=false, root-is-layout-requested=false, has-input-connection=false, x=742.0, y=14.0, text=OK, input-type=0, ime-target=false, has-links=false} (.+)[*+-/]=(.+)

k

如果愿意,我们可以添加更多边界,例如开始和结束字符:

i

测试

(.+)

DEMO

RegEx电路

jex.im可视化正则表达式:

enter image description here