具有多次重复的正则表达式

     2023-02-24     129

关键词:

【中文标题】具有多次重复的正则表达式【英文标题】:Regex with multiple repetation 【发布时间】:2016-02-01 11:01:00 【问题描述】:

我现在很难使用正则表达式。

我能够在 Regexbuddy 中调试正则表达式,但不知何故它在 C#.net 中不起作用。

例如。

我的输入字符串:-

--8W1_805_431____0210_A01_0002_L--;%PE%R  
8.2.24,%MKUKATPBASIS,%CCOMMENT,%VNORMAL,%P 2: --8W1_805_431____0210_A01_0002_L--
;ENDFOLD  

;FOLD PTP SG003920 Vel=100 % PDAT5 ServoGun=8 Cont=OPN Part=2.65 mm WeldTimer=WTDAT1 Tool[1]:zc1 Base[1]:510wz1;%PE%R 4.1.25,%MKUKATPSERVOTECH,%CSpotTC,%VPTP,%P 1:PTP, 2:SG003920, 3:, 5:100, 7:PDAT5, 9:1, 11:1, 13:OPN, 15:2.65, 18:1, 21:0, 24:0, 27:5, 30:0, 33:WTDAT1
$BWDSTART=FALSE
PDAT_ACT=PPDAT5
FDAT_ACT=FSG003920
BAS(#PTP_PARAMS,100)
EG_SPOT_POINT_NAME[]="SG003920"
EG_EXTAX_ACTIVE=EG_SERVOGUN_EXAXIS[1]
EG_THICKNESS=2.65
EG_GUN_FORCE=1
EG_COMP_HELP=0
EG_COMPENSATE_PATH=0
EG_PROGRAM_NUMBER=003920
EG_HELPPOINT=EG_CHTIP(XSG003920)
PTP EG_HELPPOINT 
EG_APPROX_OPEN=FALSE
CMD=#SPOT
EG_SPOT_POINT=EG_HELPPOINT
EG_SPOT( WTWTDAT1 )  
PTP EG_HELPPOINT C_DIS
CMD=#STOP_POINT_END
EG_SPOT_POINT=EG_HELPPOINT
EG_SPOT( )

  ; --8W1_112_431____0210_A01_0001_L--;%PE%R 8.2

;FOLD PTP SG003918 Vel=100 % PDAT7 ServoGun=1 Cont=OPN Part=2.65 mm WeldTimer=WTDAT2 Tool[1]:zc1 Base[1]:510wz1;%PE%R 4.1.25,%MKUKATPSERVOTECH,%CSpotTC,%VPTP,%P 1:PTP, 2:SG003918, 3:, 5:100, 7:PDAT7, 9:1, 11:1, 13:OPN, 15:2.65, 18:1, 21:0, 24:0, 27:5, 30:0, 33:WTDAT2
$BWDSTART=FALSE
PDAT_ACT=PPDAT7
FDAT_ACT=FSG003918
BAS(#PTP_PARAMS,100)
EG_SPOT_POINT_NAME[]="SG003918"
EG_EXTAX_ACTIVE=EG_SERVOGUN_EXAXIS[1]
EG_THICKNESS=2.65
EG_GUN_FORCE=1
EG_COMP_HELP=0
EG_COMPENSATE_PATH=0
EG_PROGRAM_NUMBER=003918
EG_HELPPOINT=EG_CHTIP(XSG003918)
PTP EG_HELPPOINT 
EG_APPROX_OPEN=FALSE
CMD=#SPOT
EG_SPOT_POINT=EG_HELPPOINT
EG_SPOT( WTWTDAT2 )
PTP EG_HELPPOINT C_DIS
CMD=#STOP_POINT_END
EG_SPOT_POINT=EG_HELPPOINT
EG_SPOT( )
;ENDFOLD


Regex Pattern:- --(?<PName>8W.*?)--.*?(?<MType>PTP|LIN).*?(?<PointNa>SG) 

组 PName 的输出必须是这样的。

8W1_112_431____0210_A01_0001_L

8W1_805_431____0210_A01_0002_L

当我在 c# 中运行这个正则表达式时,它的返回总是 false。

请任何人指导我这里出了什么问题。

提前致谢。

【问题讨论】:

我使用的模式是:正则表达式模式:- --(?8W.*?)--.*?(?PTP|LIN).*?(? SG) 在开头添加(?s)。或使用RegexOptions.Singleline @WiktorStribiżew 为什么使用“RegexOptions.Singleline” 我在输入字符串中有多行 它是 C#,而不是 Ruby,所以 (?s) - “单行”修饰符 - 使 . 匹配换行符。不注意命名,总是误导。 见ideone.com/loBDnB 【参考方案1】:

解决方法很简单:在开头添加(?s)。或者将RegexOptions.Singleline 标志与Regex.Match 一起使用。

见IDEONE demo

你需要了解regex modifiers in .NET regex的作用:

RegexOptions.Singleline - 指定单行模式。更改点 (.) 的含义,使其匹配每个字符(而不是除 \n 之外的每个字符)。有关详细信息,请参阅Regular Expression Options 主题中的“单行模式”部分。

RegexOptions.Multiline - 多行模式。更改^$ 的含义,使其分别匹配任何行的开头和结尾,而不仅仅是整个字符串的开头和结尾。有关详细信息,请参阅Regular Expression Options 主题中的“单行模式”部分。

另外,请参阅Difference between regular expression modifiers 'm' and 's'?

【讨论】:

正则表达式---重复

重复*零次或多次匹配前面的字符或子表达式+一次或多次匹配前面的字符或子表达式?零次或一次匹配前面的字符或子表达式重复特定次数{n,m}重复特定的次数n代表重复的最少次数m代表重复的最多次数*:{0,}+:{1,}?:{0,1}<center>居... 查看详情

.NET中具有重复字符和长度的正则表达式

】.NET中具有重复字符和长度的正则表达式【英文标题】:Regexwithrepeatedcharactersandlengthin.NET【发布时间】:2018-10-1202:01:51【问题描述】:我有一个正则表达式,我需要匹配捕获中的字母部分。字母长度可以是1-3个字符,并且必须... 查看详情

相同的正则表达式在 Java 和 JavaScript 中具有不同的结果 [重复]

】相同的正则表达式在Java和JavaScript中具有不同的结果[重复]【英文标题】:SameregexhavedifferentresultsinJavaandJavaScript[duplicate]【发布时间】:2020-04-1706:14:20【问题描述】:相同的正则表达式,不同的结果;JavaStringregex="Windows(?=95|98|NT|... 查看详情

python提取具有给定正则表达式格式的文件[重复]

】python提取具有给定正则表达式格式的文件[重复]【英文标题】:pythonextractafilewiththegivenregexformat[duplicate]【发布时间】:2020-07-0108:07:42【问题描述】:我试图提取包含EOB_FILE的文件例如我有类似的东西s="pathOmega/CC/Pune/SYNTT/EOB_PROCES... 查看详情

用于匹配具有特定属性的 HTML 标记的正则表达式 [重复]

】用于匹配具有特定属性的HTML标记的正则表达式[重复]【英文标题】:RegExformatchingHTMLtagswithspecificattributes[duplicate]【发布时间】:2019-10-0914:41:35【问题描述】:我有一个类似的字符串<spantitle="usea<label>">SomeContent</span>... 查看详情

在Python中使用正则表达式解析具有重复模式的字符串?

】在Python中使用正则表达式解析具有重复模式的字符串?【英文标题】:ParsingstringwithrepeatingpatternwithregexinPython?【发布时间】:2019-12-0717:51:56【问题描述】:我用Python脚本逐行读取了一个文本文件。我得到的是一个字符串列表,... 查看详情

使用正则表达式过滤文本

 regex用法:.匹配除换行符以外的任意文本w匹配字母或数字或下划线或汉子反义符-(^w)s匹配任意的空白符(空格,TAB ,回车 ,制表符 )反义符-(^s)d匹配数字【0-9】反义符-[^0-9] ^匹配字符串的开始$匹配字符串的结束匹配单... 查看详情

正则表达式学习笔记

字符:. 匹配除换行符外所有的字符w匹配字母或数字或下划线或汉子 大写的相反d匹配数字 大写的相反s匹配空格 大写的相反^匹配字符串的开头$ 匹配字符串的末尾次数:* 0-多次+1到多次?0或1次{n}重复n此{... 查看详情

正则表达式(.*?)(.+?)惰性匹配

...配前面的字符1次或多次?    匹配前面的子表达式零次或一次,或指明一个非贪婪限定符.*    匹配任意除换行符“”外的字符0次或多次.+    匹配任意除换行符“”外的字符1... 查看详情

正则表达式和sed的使用

...两种方法2 重复* 零次或多次匹配前面的字符或子表达式+ 一次或多次匹配前面的字符或子表达式?零次或一次匹配前面的字符或子表达式3 用法格式:grep ’字符串如se*’ 表名或文档名4 注意1加号和问... 查看详情

如何在 C# 中使用正则表达式从具有特定属性和值的 HTML 标记中提取数据 [重复]

】如何在C#中使用正则表达式从具有特定属性和值的HTML标记中提取数据[重复]【英文标题】:HowtoextractdatafromHTMLtagwithspecificattributeandvalueusingregexinC#[duplicate]【发布时间】:2021-05-2703:56:00【问题描述】:我一直在尝试从一些HTML数据... 查看详情

js正则表达式

参考技术A一.正则表达式正则表达式:其实就是一种匹配规则,用于检索字符串定义正则表达式的两种方式:1.直接定义2.构造函数定义那么正则表达式正则强大的地方是它可以写通配符(拥有特殊含义的字符)二. 通配符\w表... 查看详情

C# 正则表达式匹配具有分隔符的字符串

】C#正则表达式匹配具有分隔符的字符串【英文标题】:C#regextomatchastringwhichhasadelimiter【发布时间】:2010-10-1303:48:08【问题描述】:我想使用正则表达式在两个特定单词之间获取包含分隔符的字符串。例如我需要一个匹配的正则... 查看详情

如何在正则表达式中包含变量[重复]

】如何在正则表达式中包含变量[重复]【英文标题】:HowtoincludevariableinRegex[duplicate]【发布时间】:2021-10-0714:48:35【问题描述】:我想在文件上传期间使用正则表达式允许/拒绝具有特定文件类型的文件。这是我想要实现的工作正... 查看详情

使用正则表达式查找 2 个或更多按顺序重复的字符

】使用正则表达式查找2个或更多按顺序重复的字符【英文标题】:Usingregexptofind2ormorecharactersrepeatingsequentially【发布时间】:2021-09-1122:00:16【问题描述】:我正在尝试使用teradata正则表达式来查找字母连续出现两次或多次的名称... 查看详情

Visual Studio 使用正则表达式查找无重复项

】VisualStudio使用正则表达式查找无重复项【英文标题】:Visualstudiofindwithregexwithoutduplicates【发布时间】:2021-08-1011:19:51【问题描述】:假设我有一个接受字符串的函数,所以在代码中它被称为:myObject.AddMyString("Something")我想搜索... 查看详情

正则表达式学习笔记

正则表达式在使用的时候需要导入re模块 importre使用的函数是re里面的match函数格式:re.match(str1,str2)其中str1是正则表达式的符号,str2是需要匹配的字符。字  符描  述\转义字符,将一个具有特殊功能的字符转义为一个普... 查看详情

正则表达式 Python 分组 [重复]

】正则表达式Python分组[重复]【英文标题】:RegexPythonGrouping[duplicate]【发布时间】:2019-01-2512:31:39【问题描述】:我正在尝试生成以下“查询ID:XYZABC”我的代码如下来自一个.txt文件,该文件具有以下“Query=xyxysdfl;jas”的一个实... 查看详情