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