!!!!!!!!!!!!!!!!!!!!!!!!!求一个正则表达式

约修亚 2007-08-31 09:30:03
我有一段文字

THE ABOVE REFERENCED CUSTOMER HAS ELECTED TO ROLLOVER THE 60,000,000.00 US DOLLARS LIBOR RATE LOAN MATURING 04/13/07, YOUR SHARE 342,857.14.

我定义的关键字是 ELECTED TO ROLLOVER THE 和 LOAN MATURING 和 YOUR SHARE

我想要得正则表达式实现这样

ELECTED TO ROLLOVER THE 60,000,000.00 US DOLLARS LIBOR RATE

LOAN MATURING 04/13/07,

YOUR SHARE 342,857.14.

也就是 按照定义的关键字加空格 来进行匹配

请问怎样实现这个正则表达式呢??

谢谢大家了!
...全文
264 30 打赏 收藏 转发到动态 举报
写回复
用AI写文章
30 条回复
切换为时间正序
请发表友善的回复…
发表回复
xinshijiuu 2007-09-05
  • 打赏
  • 举报
回复
感谢楼主开的那么好的帖子让我学习阿
-过客- 2007-09-05
  • 打赏
  • 举报
回复
!!! 我想要在这行中匹配人一个关键字应该怎么写呢
------------
不明白什么意思
约修亚 2007-09-05
  • 打赏
  • 举报
回复
!!! 我想要在这行中匹配人一个关键字应该怎么写呢
chenjunhui 2007-09-05
  • 打赏
  • 举报
回复
ELECTED TO ROLLOVER THE 60,000,000.00 US DOLLARS LIBOR RATE
LOAN MATURING 04/13/07
YOUR SHARE 342,857.14
chenjunhui 2007-09-05
  • 打赏
  • 举报
回复
using System.Text.RegularExpressions;

Regex re = new Regex(@"(ELECTED.*\s(\d{1,3},?)*.\d*.*RATE).*(LOAN.*/\d{2,4}).*(YOUR.*\s(\d{1,3},?)*.\d*)");

Match m = re.Match("your string");
if( m.Success )
{
Response.Write(m.Groups[1].Value + "<br>");
Response.Write(m.Groups[3].Value + "<br>");
Response.Write(m.Groups[4].Value + "<br>");}
else
{}
-过客- 2007-09-05
  • 打赏
  • 举报
回复
try

string yourStr = ............;
Match m = Regex.Match(test, @"((date.*?)(to.*?))?(re.*?)?(effective.*?)?((borrower's commitment will be reduced from.*?)(to.*?))?((Your share of the commitment will be reduced from.*?)(to.*?))?$", RegexOptions.IgnoreCase);
if (m.Success)
{
Response.Write(m.Groups[2].Value + "<br>");
Response.Write(m.Groups[3].Value + "<br>");
Response.Write(m.Groups[4].Value + "<br>");
Response.Write(m.Groups[5].Value + "<br>");
Response.Write(m.Groups[7].Value + "<br>");
Response.Write(m.Groups[8].Value + "<br>");
Response.Write(m.Groups[10].Value + "<br>");
Response.Write(m.Groups[11].Value + "<br>");
}
约修亚 2007-09-05
  • 打赏
  • 举报
回复
1 Date
2 To 1
3 Re 2
4 Effective
5 borrower's commitment will be reduced from
6 to 5
7 Your share of the commitment will be reduced from
8 to 7

谢谢你,再帮帮我好吗 例如上面这个表
第一列是顺序列 第2列是关键字列 第3列标示了当前的关键字在第几个关键字之后 例如
第一个关键字是Date 第2个关键字是 To To后面的1代表在第1个关键字之后;
依次类推:5 borrower's commitment will be reduced from
to后面的的5代表在第5个关键字之后

请问我要象匹配这样的要怎么写呢
godgreat 2007-09-05
  • 打赏
  • 举报
回复
强人,学习对象
-过客- 2007-09-05
  • 打赏
  • 举报
回复
那关键字的前后顺序是否固定呢?

另外就是
borrower's commitment will be reduced from
to
以及
Fax:
to
应该是配对出现的吧


如果这样,试下

string yourStr = .............;
string test = "Effective 30-Mar-2007, Fax 098-245-8787 to USD 98,230,000.00.";
Match m = Regex.Match(test, @"(Effective.*?)?((the borrower's commitment will be reduced from.*?)(to.*?))?((Fax.*?)(to.*))?$", RegexOptions.IgnoreCase);
if (m.Success)
{
Response.Write(m.Groups[1].Value + "<br>");
Response.Write(m.Groups[3].Value + "<br>");
Response.Write(m.Groups[4].Value + "<br>");
Response.Write(m.Groups[6].Value + "<br>");
Response.Write(m.Groups[7].Value + "<br>");
}

如果某一个值没空,那就是说明不存在这个关键字,至于结果如何处理,你自己看下吧
约修亚 2007-09-05
  • 打赏
  • 举报
回复
可是,我定义的关键字是不定的 ,有可能是2 个 3 个 4 个 或者多个.
那我的正则表达式要怎么匹配呢

谢谢了 强人
-过客- 2007-09-05
  • 打赏
  • 举报
回复
其实这里真的没必要用正则的...

string test = "Effective 30-Mar-2007, the borrower's commitment will be reduced from USD 144,725,000.00 to USD 144,450,000.00. Fax 098-245-8787 to USD 98,230,000.00.";
Match m = Regex.Match(test, @"(Effective.*?)(the borrower's commitment will be reduced from.*?)(to.*?)(Fax.*?)(to.*)", RegexOptions.IgnoreCase);
if (m.Success)
{
Response.Write(m.Groups[1].Value + "<br>");
Response.Write(m.Groups[2].Value + "<br>");
Response.Write(m.Groups[2].Value + "<br>");
Response.Write(m.Groups[3].Value + "<br>");
Response.Write(m.Groups[4].Value + "<br>");
Response.Write(m.Groups[5].Value + "<br>");
}
约修亚 2007-09-05
  • 打赏
  • 举报
回复
哦 是这样子的
例如这样:
Effective 30-Mar-2007, the borrower's commitment will be reduced from USD 144,725,000.00 to USD 144,450,000.00. Fax 098-245-8787 to USD 98,230,000.00.

关键字是:Effective
borrower's commitment will be reduced from
to
Fax:
to
也就是说一行中有多个定义的关键字 我该怎么匹配呢

谢谢,能给个正则表达式吗

benimaru8610 2007-09-05
  • 打赏
  • 举报
回复
mark
约修亚 2007-08-31
  • 打赏
  • 举报
回复
谢谢大家,我看看,
-过客- 2007-08-31
  • 打赏
  • 举报
回复
不知道是不是我理解错误,既然ELECTED TO ROLLOVER THE 和 LOAN MATURING 和 YOUR SHARE 这些关键词固定了,为什么不用IndexOf来取呢


以下为正则实现方式

string test = "THE ABOVE REFERENCED CUSTOMER HAS ELECTED TO ROLLOVER THE 60,000,000.00 US DOLLARS LIBOR RATE LOAN MATURING 04/13/07, YOUR SHARE 342,857.14.";
Match m = Regex.Match(test, @"(ELECTED TO ROLLOVER THE.*?)\s*(LOAN MATURING.*?)\s*(YOUR SHARE.*)$", RegexOptions.IgnoreCase);
if(m.Success)
{
Response.Write(m.Groups[1].Value + "<br>");
Response.Write(m.Groups[2].Value + "<br>");
Response.Write(m.Groups[3].Value + "<br>");
}

keystudio 2007-08-31
  • 打赏
  • 举报
回复
string str = "THE ABOVE REFERENCED CUSTOMER HAS ELECTED TO ROLLOVER THE 60,000,000.00 US DOLLARS LIBOR RATE LOAN MATURING 04/13/07, YOUR SHARE 342,857.14.";
Regex re = new Regex(@"(?<name>((ELECTED TO ROLLOVER THE)|(LOAN MATURING)|(YOUR SHARE)))(?<value>.*?)((?=ELECTED TO ROLLOVER THE)|(?=LOAN MATURING)|(?=YOUR SHARE)|$)");
MatchCollection mc = re.Matches(str);
foreach (Match m in mc)
{
MessageBox.Show(m.Groups["name"].ToString() + ":" + m.Groups["value"].ToString());
}
wuhan_dotnet 2007-08-31
  • 打赏
  • 举报
回复
ding
chuxue1342 2007-08-31
  • 打赏
  • 举报
回复
try

"ELECTED TO ROLLOVER THE (.+) LOAN MATURING (.+) YOUR SHARE (.+)"
WNASP 2007-08-31
  • 打赏
  • 举报
回复
up
约修亚 2007-08-31
  • 打赏
  • 举报
回复
dd
加载更多回复(10)

62,072

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧