正则表达式 G[S]:

 

     我们的编译原理实验已经做到了文法分析了,其中一个就是区分终结符和非终结符。有的文法开始没有G[S]:,可是大部分都是有的。在区分的时候不能将这些包含在其中。G[S]:这个给我们的信息是,文法开始符是:S,但是G却不是非终结符,所以要将其挑出来。在G[S]:中,它们是作为一个整体的。其中可能还有变化,如G1[S]:等,所以需要正则表达式来匹配。

     这个正则表达式是 @"^[A-Z][0-9]{0,1}\[[A-Z]\]:$" ,构造也是很容易的,但是第一次test的时候却没有成功。今天早上我一个个字母匹配的结果还是这样,这次实验却成功了。真不明白为什么会这样,或许是G1[S]:中的冒号有问题吧。可能是中文的或是全角的。我感觉这个正则表达式挺好玩的。

     这只是一段测试代码

 

 

 

ContractedBlock.gif ExpandedBlockStart.gif Code
using System.Text.RegularExpressions;

namespace regex
{
    
class test
    {
        
public static void Main()
        {
            
string input = "A1[S]:";
            
string patten = @"^[A-Z][0-9]{0,1}\[[A-Z]\]:$";
            Regex reg 
= new Regex(patten);
            
//Regex reg = new Regex(@"^[A-Z][0-9]{0,1}\[[A-Z]\]:$");
            Match match = reg.Match(input);
            
if (match.Success)
            {
                 System.Console.WriteLine(
"匹配成功!");
            }
            
else
            {
                System.Console.WriteLine(
"匹配不成功!");
            } 
        }
    }
}

在编码的时候还是要细心,避免一些逻辑错误。

 

转载于:https://www.cnblogs.com/mht_two/archive/2008/10/23/1317820.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值