1

如何使用正则表达式进行转换

11111aA$xx1111xxdj$%%`

aA$xx1111xxdj$%%

所以,换句话说,我想删除(或匹配)第一个1's 分组。

4

5 回答 5

2

根据语言,您应该有办法用正则表达式替换字符串。在 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);

链接到ideone

一般来说,如果您只想在字符串的开头匹配任何内容,^请在表达式中添加前缀;同样,$在末尾添加 a 会使匹配只接受输入末尾的字符串。

于 2012-10-12T20:44:20.663 回答
1

如果这是开始,你可以使用这个:

^[1]*

至于替换,这取决于语言。在powershell中,我会这样做:

[regex]::Replace("11111aA$xx1111xxdj$%%","^[1]*","")

这将返回:

aA$xx1111xxdj$%%
于 2012-10-12T20:45:31.670 回答
0

如果您只想替换字符串开头的连续“1”,请将以下内容替换为空字符串:

^1+

如果连续的“1”不一定是字符串中的第一个字符(但您仍然只想替换一个组),请将以下内容替换为第一个捕获组的内容(通常是\1or $1):

1+(.*)

请注意,仅当您只有“全部替换”功能可用时才需要这样做,但是大多数正则表达式实现还提供了一种仅替换匹配实例的方法,在这种情况下,您可以只替换1+为空字符串。

于 2012-10-12T20:45:17.810 回答
0

我不确定,但你可以试试这个 [^1](\w*\d*\W)*- 除了开始“1”(n)个符号外,将所有匹配作为一个组

于 2012-10-12T20:58:17.823 回答
0

在 Javascript 中

    var str  = '11111aA$xx1111xxdj$%%';
    var patt = /^1+/g;
    str      =  str.replace(patt,"");
于 2013-02-15T11:36:04.880 回答