我对正则表达式完全不熟悉.我需要实现的是,我有一个包含以下字符串的字符串变量,例如,
"我的名字是#P_NAME#,我是#P_AGE#岁了"
我需要使用正则表达式(字符串数组或两个字符串变量等)提取两个字符串P_NAME和P_AGE.即字符串以#开头,以#结尾,我需要提取中间部分.
如何使用正则表达式在C#中执行此操作..?
如果我之间有一个新的行字符,我怎么能提取相同的内容.即,例如,
"我的名字是#P_NAME#和\ r \n我是#P_AGE#岁了".
谢谢
感谢大家...
以下为我工作...我无法发布我自己的答案作为答案直到8小时到期stackoverflow ... :)
string str = "My Name is #P_NAME# and \r\n I am #P_AGE# years old";
MatchCollection allMatchResults = null;
var regexObj = new Regex(@"#\w*#");
allMatchResults = regexObj.Matches(str);
Run Code Online (Sandbox Code Playgroud)
'allMatchResults'包含#P_NAME#和#P_AGE#(即包括#字符).但拥有它有助于我的其他逻辑而不是没有它.
El *_*oco 26
你可以这样做
using System.Text.RegularExpressions;
using System;
public class Test
{
public static void Main(){
string s = "My name is #Dave# and I am #18# years old";
Regex r = new Regex(@"#(.+?)#");
MatchCollection mc = r.Matches(s);
Console.WriteLine("Name is " + mc[0].Groups[1].Value);
Console.WriteLine("Age is " + mc[1].Groups[1].Value);
}
}
Run Code Online (Sandbox Code Playgroud)
我不知道你的应用程序是什么,但我必须说这不是一个非常强大的数据传输方法.#在那里开始得到一些额外的东西,这一切都出错了.例如以#他们的名字命名的人!
但是,如果您可以保证您将始终使用此格式的字符串,那么这确实有效.
正则表达式的解释 #(.+?)#
首先#匹配a#
(开始一个小组..Groups[1]在代码中索引.[0]是整场比赛,例如#Dave#不仅仅是Dave
.+?匹配至少一个字符..是一个角色.+是重复(至少一次).并?告诉正则表达式引擎是懒惰的 - 所以不要#匹配我们的决赛将匹配的那个#
) 关闭小组
#匹配另一个#- 在这种情况下'结束'一个
一个正则表达式,例如"#[^#]+#"匹配哈希,后跟一个或多个非哈希字符,后跟另一个哈希.
有各种各样的替代品可以用于此类"#.*?#".
以下代码将输出#P_NAME#和#P_AGE#.
string p = "My Name is #P_NAME# and \r\n I am #P_AGE# years old";
Regex reg = new Regex("#[^#]+#");
MatchCollection matches = reg.Matches(p);
foreach (Match m in matches)
{
Console.WriteLine(m.Value);
}
Run Code Online (Sandbox Code Playgroud)
感谢大家..
以下对我有用...
string str = "My Name is #P_NAME# and \r\n I am #P_AGE# years old";
MatchCollection allMatchResults = null;
var regexObj = new Regex(@"#\w*#");
allMatchResults = regexObj.Matches(str);
Run Code Online (Sandbox Code Playgroud)
'allMatchResults' 包含#P_NAME# 和#P_AGE#(即包括# 字符)。但拥有它有助于我的其他逻辑
| 归档时间: |
|
| 查看次数: |
35844 次 |
| 最近记录: |