我有一个如下所示的字符串
String inp = "Monday 02nd January 2017";
我想从第二个单词替换最后两个字符。我的输出应该如下所示。
Monday 02 January 2017
我创建了一个正则表达式,它给出了字符串中第二个单词的最后两个字符,但我不确定如何用任何内容替换它们。
这是我的正则表达式和替换函数
regex = "^(?:\\S+\\s){1}\\S+(\\w{2})\\b.*";
String op = inp.replaceAll(inp.replaceAll(regex, "$1"), "");
因为有时会发生这种情况,我的输入字符串就像August 01st January 2017
,当我更换" st"它取代了所有" st"在一个字符串中。我不想那样发生。它应该替换第二个单词中的最后两个字符。
请问我怎样才能在java中实现这个目标?
答案 0 :(得分:1)
试试这个:
DealTask.joins(:attachments)
.select("deal_tasks.id, deal_tasks.name, count(attachements.id) as attachments")
.group("deal_tasks.id")
.collect(&:attributes)
#This will gve you something like
[
{"id"=>34332630, "name"=>"some name", "attachments"=>1},
{"id"=>71649461, "name"=>"some name", "attachments"=>1}
]
将此项与(?<=\w )(\w+)\w{2}
一起使用,并将替换为replaceFirst
。
说明:
lookbehind找到第二个单词的开头,因为你正在使用$1
,它会找到第一个匹配(第二个单词)并停止,而不是继续找到第三个和第四个单词。 / p>
然后我们捕获一堆单词字符,然后是两个没有捕获的单词字符。