正则表达式求解!!!请务必进来看一看 补充[\S]{0,}abcdef[\S]{0,}中的\S 大写的 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 建议这种事情还是不要让正则表达式干,我认为用regex表示起来非常麻烦,排列组合比较恐怖,不如自己写个算法来提取。可以考虑使用正则表达式来提取大块的字符串,结合下面的小段代码来实现,你也可以对下面的代码进行优化 static void Main(string[] args) { string value = "asdfgabcdefgjasdkjbcdfaejhfdas"; ListA2FStrings( value ); Console.ReadLine(); } static void ListA2FStrings( string value ) { byte[] bytes = System.Text.Encoding.ASCII.GetBytes( value ); ArrayList al = new ArrayList(); // buffer stored a-f chars for( int i = 0 ; i < bytes.Length ; i++ ) { byte byt = bytes[ i ]; if ( al.Count == 6 ) { byte[] buffer = (byte[])al.ToArray( typeof( byte ) ); Console.WriteLine( System.Text.Encoding.ASCII.GetString( buffer ) ); al.Clear(); // clear buffer } if ( IsA2F( byt ) ) { if ( al.Count < 6 && !al.Contains( byt ) ) { al.Add( byt ); } else { al.Clear(); al.Add( byt ); } } else { al.Clear() ; // clear buffer } } } static bool IsA2F( byte byt ) { if ( byt >= 97 && byt <= 102 ) return true; else return false; } ALLsharps兄弟:好象[\S]{0,}abcdef[\S]{0,}ddedfddfacebd,不能匹配出dfaceb.你匹配的是一定要按abcdef顺序的字符串,如ababcdefe,匹配abcdef,但如果顺序反了就不行了,再想想办法,谢谢了 OneDotRed(武装到眼神) 非常谢谢你的代码.我其实也知道用C#代码实现是最简单的,但我这就想探讨一下有没有这种匹配方法. 有一兄弟发了这样的:if ( Regex.IsMatch( "a" ) && Regex.IsMatch( "b" ) &&Regex.IsMatch( "c" ) &&Regex.IsMatch( "d" ) &&Regex.IsMatch( "e" ) &&Regex.IsMatch( "f" )){ DoSomething();}呵呵!这个老兄真是思维发散 有一兄弟发了这样的:呵呵!这个老兄真是思维发散================其实这个老兄就是俺拉,不过在你另外一贴中是字符串中必须包含abcd四个字符(非连续的)。正则表达式不是万能的,而且效率也不是最高,不如自己写个算法。 http://community.csdn.net/Expert/topic/3602/3602220.xml?temp=.418194贴原贴内容:要求字符串中必须要有a,b,c,d这四个字母!正确:b,a,c,dx,x,x,c,d,x,x,x,a,x,c,x,x,xx,a,a,x,c,d,b,b,xxxx不正确的:a,a,b,x,x,c,x,x,x,a,c,d,c,d,xxx---------------------------希望别人给你解决问题的时候不要说别人的发散思维!! 线程的理解 怎样才能知道所要画贝塞尔曲线的控制点坐标? 请教如何获取IIS的客户端信息 如何设置LISTVIEW的表格视图中单元格的行高 csharp socket编程{p2p}帮我分析怎么找到问题所在 error CS0006: 未能找到元数据文件“System.DirectoryServices.dll” 如何控制DataGrid的行的颜色??? 请教各位高手怎么样修改文本文件中的某个内容? C#大神,我编了一个小程序,可是显示的时候数组为什么为空呢? 连接数据库问题 怎样获得打印对话框中所选择的打印机名称?请教 怎样在2001届毕业生下建立一个子节点呢???
{
string value = "asdfgabcdefgjasdkjbcdfaejhfdas";
ListA2FStrings( value );
Console.ReadLine();
} static void ListA2FStrings( string value )
{
byte[] bytes = System.Text.Encoding.ASCII.GetBytes( value ); ArrayList al = new ArrayList(); // buffer stored a-f chars for( int i = 0 ; i < bytes.Length ; i++ )
{
byte byt = bytes[ i ]; if ( al.Count == 6 )
{
byte[] buffer = (byte[])al.ToArray( typeof( byte ) );
Console.WriteLine( System.Text.Encoding.ASCII.GetString( buffer ) );
al.Clear(); // clear buffer
} if ( IsA2F( byt ) )
{
if ( al.Count < 6 && !al.Contains( byt ) )
{
al.Add( byt );
}
else
{
al.Clear();
al.Add( byt );
}
}
else
{
al.Clear() ; // clear buffer
}
}
} static bool IsA2F( byte byt )
{
if ( byt >= 97 && byt <= 102 )
return true;
else
return false;
}
非常谢谢你的代码.我其实也知道用C#代码实现是最简单的,但我这就想探讨一下有没有这种匹配方法.
Regex.IsMatch( "b" ) &&
Regex.IsMatch( "c" ) &&
Regex.IsMatch( "d" ) &&
Regex.IsMatch( "e" ) &&
Regex.IsMatch( "f" ))
{
DoSomething();
}呵呵!这个老兄真是思维发散
呵呵!这个老兄真是思维发散
================
其实这个老兄就是俺拉,不过在你另外一贴中是字符串中必须包含abcd四个字符(非连续的)。
正则表达式不是万能的,而且效率也不是最高,不如自己写个算法。
要求字符串中必须要有a,b,c,d这四个字母!
正确:
b,a,c,d
x,x,x,c,d,x,x,x,a,x,c,x,x,x
x,a,a,x,c,d,b,b,xxxx不正确的:
a,
a,b,x,x,c,
x,x,x,a,c,d,c,d,xxx
---------------------------希望别人给你解决问题的时候不要说别人的发散思维!!