标签:regex-group c regex
我正在尝试使用C#正则表达式匹配相同模式的组.
这是一个我无法工作的小例子.
我需要获取单引号之间的所有字符串(例如,CodigoEmpresa)
uses MainRecord, objErrorList, SysUtils, XMLMXMWebServiceReturn, objMainProcesso,
objProcessoWS, objProcessaRelatorioQuickReport, QuickRpt, Forms,
RBalanc, RBalancete, RBaCCMens, RBalaMensal, RBalaMensalCons,
objcadcontabilidade, objContabilidadeValidacoes;
const
CODIGO_EMPRESA = 'CodigoEmpresa';
ANO_MES = 'AnoMes';
RELATORIO_POR = 'RelatorioPOR';
CONTA_INI = 'ContaIni';
CONTA_FIM = 'ContaFim';
GRAU_CONTA = 'GrauConta';
CCUSTOS_INI = 'CCustosIni';
CCUSTOS_FIM = 'CCustosFim';
GRAU_CCUSTOS = 'GrauCCustos';
DETALHAR_CONSOLIDADO = 'DetalharConsolidado';
DESCONSIDERAR_ENCERRAMENTO = 'DesconsiderarEncerramento';
QUEBRA_CCUSTO = 'QuebraCCusto';
CONTAS_SEM_MOVIMENTO = 'ContasSemMovimento';
CODIGO_ALTERNATIVO = 'CodigoAlternativo';
const
ERROR_BALANCETE_MENSAL_0001 = 'BALANC0001';
ERROR_BALANCETE_MENSAL_0002 = 'BALANC0002'; //Empresa Inexistente
ERROR_BALANCETE_MENSAL_0003 = 'BALANC0003';
ERROR_BALANCETE_MENSAL_0004 = 'BALANC0004';
ERROR_BALANCETE_MENSAL_0005 = 'BALANC0005';
ERROR_BALANCETE_MENSAL_0006 = 'BALANC0006';
ERROR_BALANCETE_MENSAL_0007 = 'BALANC0007';
ERROR_BALANCETE_MENSAL_0008 = 'BALANC0008';
到目前为止,我已经尝试过了:
Match match = Regex.Match(delphiFileInText, @"const.+=\s*'(?<property>[\d\w]+)'", RegexOptions.IgnoreCase | RegexOptions.Singleline);
但是我得到的只是最后一场比赛(BALANC0008);
希望我能说清楚.感谢帮助
解决方法:
我建议以下正则表达式:
'(?<property>(?:\\'|[^'])*)'
它将捕获输入中所有用单引号分隔的字符串.如果您还想捕获常量,则建议使用以下正则表达式:
(?<const>\w+)\s*=\s*'(?<property>(?:\\'|[^'])*)'
标签:regex-group,c,regex 来源: https://codeday.me/bug/20191030/1966129.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。