- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个正则表达式
(?'Conpany'Company) - (?'Model'Model) - (?'Version'V(?'Major'\d+).(?'Minor'\d+).(?'Bugfix'\d+).(?'Build'\d+)(?'PreRelease'-[[:alnum:]]*)?(?'Meta'\+[[:alnum:]]*)?) - (?'CompileDate'(?'Year'\d{4})(?'Month'\d{2})(?'Day'\d{2}))
应该匹配 SCPI 字符串
Company - Model - V1.0.0.1718-RC1 - 20190821
如果我使用在线工具尝试正则表达式,一切正常并且字符串与正则表达式匹配。
现在我正在尝试将正则表达式与 C# 一起使用来评估命令答案,但结果始终为 false
var regex = @"(?'Conpany'Company) - (?'Model'Model) - (?'Version'V(?'Major'\d+).(?'Minor'\d+).(?'Bugfix'\d+).(?'Build'\d+)(?'PreRelease'-[[:alnum:]]*)?(?'Meta'\+[[:alnum:]]*)?)" - (?'CompileDate'(?'Year'\d{4})(?'Month'\d{2})(?'Day'\d{2}))";
//
responce = await rs232Device.SendCommand(query, DefaultTimeout);
var match = Regex.Match(responce.Message, regex, RegexOptions.IgnoreCase);
//
Assert.That(match.Success, Is.True);
我发现编译日期 - (?'CompileDate'(?'Year'\d{4})(?'Month'\d{2})(?'Day'\d{2 }))
从正则表达式来看一切都很好。
但我不知道为什么它不能在 C# 中使用完整的正则表达式,而 https://regex101.com/可以匹配字符串。
最佳答案
.NET 正则表达式引擎不支持 POSIX 字符类。你在这里有 [[:alnum:]]
,将其替换为 \w
(任何 word char ),或 [\p{L}\p{ N}]
(任何字母或数字)或 [^\W\p{Pc}]
(除连接标点符号如 _
之外的任何单词字符)将让它起作用。
查看其他 POSIX 字符类示例映射(它们可能无法完全相同但至少相似):
POSIX .NET Description[:alpha:] \p{L} Any letters (\p{L} matches only those from the BMP plane)[:alnum:] [\p{L}\p{N}] Any letters or digits[:digit:] \p{N} or \d Any digits (there is also a [:d:] POSIX variation)[:space:] \s or \p{Z} Any whitespace[:blank:] [\p{Zs}\t] Any horizontal whitespace
Besides, some extend them to
POSIX .NET Description[:ascii:] [\x00-\x7E] ASCII character set[:xdigit:] [0-9a-fA-F] Chars that are used to define hex values
Besides, you must escape literal dots in the pattern.
Also, always use the Web regex tester that is compatible with the regex engine you plan to use with your pattern.
(?'Conpany'Company) - (?'Model'Model) - (?'Version'V(?'Major'\d+)\.(?'Minor'\d+)\.(?'Bugfix'\d+)\.(?'Build'\d+)(?'PreRelease'-\w*)?(?'Meta'\+\w*)?) - (?'CompileDate'(?'Year'\d{4})(?'Month'\d{2})(?'Day'\d{2}))
参见 regex demo
关于c# - 正则表达式包含 [ :alnum:] POSIX character class did not match string with C#, 但在线工具评估正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57822008/
我正在尝试获取 "([:alnum][:alnum][:alnum]"和 ")" 之间的字符串和字符串本身。事实上,这个想法是清理一个被许多不需要的字符污染的文件。 例如,我有很多行是这样的: bÖÓ
我有以下字符串- I know what that’s like when an army is defeated. 此 MySQL 命令返回 1。 select "I know wha
问题:如果我在 where 子句中传递任何单词,那么仅当传递的单词是 alnum 或 num 时,查询才应使用 mysql 正则表达式返回。 我有一个地址表。 address table ------
Ruby 语言正则表达式中的类\p{Alnum} 是什么?它包含哪些字符,它与 [:alnum:] 有何不同? 最佳答案 基于rdoc还有这个tutorial ,这两个表达式是等价的。 它们包含字母和
如果在"[]"中出现了"^",代表本表达式不匹配"[]"内出现的字符,比如"/[^a-z]/"不匹配任何小写字母!并且
php 是否有或支持任何特殊字符类,如用于正则表达式的 [:alnum:]? 最佳答案 所有的字符类都是listed in the doc . 关于php - php 是否有任何特殊字符类,如 [ :
查看 Javadoc for java.util.regex.Pattern \p{Alnum} An alphanumeric character:[\p{IsAlphabetic}\p{IsDig
在哪里可以看到 R 中正则表达式的预定义模式的代码?文档说它与 locales/POSIX locale 有关。 > [[:alpha:]] > [:alpha:] 不打印任何内容。如何查
我有一个正则表达式 (?'Conpany'Company) - (?'Model'Model) - (?'Version'V(?'Major'\d+).(?'Minor'\d+).(?'Bugfix'
我在boost_1.59中使用spirit来解析类c语言(名为stone,最初由java编写)。但是我在使用 boost::spirit::qi 解析 c 风格的字符串时遇到了麻烦。整个代码位于 co
我有一个更复杂的 boost::spirit 语法,它与我预期的不匹配。我能够将其分解为这个最小的示例:http://ideone.com/oPu2e7 (不在那里编译,但用 VS2010 编译) 基
我是一名优秀的程序员,十分优秀!