我正在工作很长时间才能获得正则表达式字符串 - 但没有任何成功。 希望,在这里得到一些帮助。 有以下格式的字符串:
G/20/EU (picture)/europe 21/
或
/House/200 hits/real estate
或
color/red-green/dark blue/orange/321
全局规则:在字符/()上拆分文本 所以以下正则表达式有效:([/()]) 但我还需要删除/拆分单个数字。这里:20和321,但不是21(这是一个短语“欧洲21”)或200(这是一个短语“200次点击”)
有时字符串以/开头,或以/结尾,有时不以。数字可以出现在字符串的开头,结尾或中间。
结果应该是简单的单词或短语,如:
G
EU
picture
europe 21
House
200 hits
real estate
color
red-green
dark blue
orange
有没有人知道,正则表达式是什么样的?
谢谢
答案 0 :(得分:1)
可能是这样的:
/^\d+\/|\/\d+\/|\/\d+$|\//
即。检查字符串开头的数字,或两个斜线之间的数字或字符串末尾的数字,或者只是它自己的斜杠......
答案 1 :(得分:1)
如果您的正则表达式确实有前瞻性和后瞻性,您可以试试这个:
[/()]|(?<=\/|^)\d+(?=(?:\/|$))
这会检查一系列数字,其中有/
或之前的行^
的开头,以及/
或行的结尾{{1后面。
或者你的部分
答案 2 :(得分:0)
假设我已经理解了这个例子,下面的正则表达式应该提供所需的输出。
void Main()
{
string testString = @"G/20/EU (picture)/europe 21/";
Regex test = new Regex(@"(\w+[^\w\d]?|\d+)/");
string outputTest = test.Replace(testString, "$1\r\n");
Console.WriteLine(outputTest);
}
答案 3 :(得分:0)
使用(G)Awk,您可以执行以下操作:
awk -F "[()/]" '{ for (i=1;i<=NF;i++) { if ($i !~ /^[0-9]*$/ ) {print $i }}}' <<EOF
G/20/EU (picture)/europe 21/
/House/200 hits/real estate
color/red-green/dark blue/orange/321
EOF
#OUTPUT:
G
EU
picture
europe 21
House
200 hits
real estate
color
red-green
dark blue
orange
HTH