我有两种类型的字符串,如下所示:
78:24207 PERF keytouchListAction ProtocolSelect 04.00 : 1502876877199 1502876879180
或
78:27247 PERF create tab state : 1502876879180
我正在寻找一个正则表达式来删除字符串78:24207
生产这样的东西:
PERF keytouchListAction ProtocolSelect 04.00 : 1502876877199 1502876879180
或
PERF create tab state : 1502876879180
然后如果字符串在:
之后只包含第一个数字的两个数字:
PERF keytouchListAction ProtocolSelect 04.00 : 1502876877199 1502876879180
成为:
PERF keytouchListAction ProtocolSelect 04.00 : 1502876877199
我已经为第一个模式尝试了这个replace(/^\d+\.\s*/, '');
,但似乎没有用。
和第二个问题replace(\:.*$)
的这种模式,但我的字符串中没有任何变化。
任何关于我做错的提示?
答案 0 :(得分:2)
您可以在一次replace
电话中执行此操作:
var s = '78:24207 PERF keytouchListAction ProtocolSelect 04.00 : 1502876877199 1502876879180'
var r = s.replace(/^\d+:\d+\s*|(:\s*\d+)\s+\d+$/g, '$1')
console.log(r)
s = '78:27303 PERF tab state created : 1502882663195'
var r = s.replace(/^\d+:\d+\s*|(:\s*\d+)\s+\d+$/g, '$1')
console.log(r)

答案 1 :(得分:1)
您可以通过首先匹配然后替换代码片段
来使用它
function matchAndReplace(str){
str = str.match(/\d+:\d+ ([\w\s.]*)(:\s*\d+)/g)[0];
console.log(str.replace(/^\d+:\d+ /,''));
}
matchAndReplace("78:24207 PERF keytouchListAction ProtocolSelect 04.00 : 1502876877199 1502876879180");
matchAndReplace("78:27247 PERF create tab state : 1502876879180");

答案 2 :(得分:1)
对于您需要的第一个模式:
replace(/^\d+:\d+\s+/, '');
对于第二种模式:
replace(/(\s+\d+)\s+\d+$/, '$1');
答案 3 :(得分:1)
你关心这种模式吗?如果没有,你可以用这个替换前9个字符:
Data refined;
set begin;
TimeDifference = intck('days', date_var1, date_var2) ;
if abs(TimeDifference) <=30 delete;
run;
答案 4 :(得分:1)
作为替代选择:不要替换 - 使用
获取想要的内容match
[a-z].*:\s*\d+
它匹配一个字母及其后面的一切冒号,然后是(可选空格和)一个数字。
document.write(
'78:24207 PERF keytouchListAction ProtocolSelect 04.00 : 1502876877199 1502876879180'
.match(/[a-z].*:\s*\d+/i)
);