如何使用正则表达式转换
11111aA$xx1111xxdj$%%`
到
aA$xx1111xxdj$%%
所以,换句话说,我想删除(或匹配)1
的FIRST分组。
答案 0 :(得分:2)
根据语言的不同,您应该有办法用正则表达式替换字符串。在Java中,您可以这样做:
String s = "11111aA$xx1111xxdj$%%";
String res = s.replaceAll("^1+", "");
^
“锚”表示必须匹配输入的开头。 1+
表示一个或多个1
个字符的序列。
这是一个link to ideone这个正在运行的程序。
C#中的相同程序:
var rx = new Regex("^1+");
var s = "11111aA$xx1111xxdj$%%";
var res = rx.Replace(s, "");
Console.WriteLine(res);
通常,如果您只想在字符串的开头匹配任何内容,请在表达式中添加^
前缀;同样,在末尾添加$
会使匹配仅接受输入末尾的字符串。
答案 1 :(得分:1)
如果这是开始,您可以使用:
^[1]*
就替换而言,取决于语言。在powershell中,我会这样做:
[regex]::Replace("11111aA$xx1111xxdj$%%","^[1]*","")
这将返回:
aA$xx1111xxdj$%%
答案 2 :(得分:0)
如果您只想在字符串的开头替换连续的“1”,请将以下内容替换为空字符串:
^1+
如果连续的“1”不一定是字符串中的第一个字符(但您仍然只想替换一个组),请将以下内容替换为第一个捕获组的内容(通常为{{1} }或\1
):
$1
请注意,只有在您只有“替换所有”功能时才需要这样做,但大多数正则表达式实现还提供了一种只替换匹配的一个实例的方法,在这种情况下,您只需替换{{1用空字符串。
答案 3 :(得分:0)
我不确定,但你可以尝试一下
[^1](\w*\d*\W)*
- 将所有匹配为单个组,但不包括“1”(n)符号
答案 4 :(得分:0)
在Javascript中
var str = '11111aA$xx1111xxdj$%%';
var patt = /^1+/g;
str = str.replace(patt,"");