c# - 正则表达式 - 如果开始匹配则匹配结束

标签 c# sql .net regex tsql

我要匹配以下字符串:

[anything can be here]
[{anything can be here}]

我可以只使用一个正则表达式来实现吗?

我目前正在使用这个 '^\[({)?.+(})?]$',但它也会匹配:

[anything can be here}]
[{anything can be here]

仅当使用 { 时,我才需要匹配 }

请注意,我只能使用正则表达式匹配函数,因为我已将其实现为 SQL CLR 函数,以便在 T-SQL 语句中使用它。

最佳答案

基本上你可以写(逐字字符串):

^\[(?:{.+}|[^]{}]+)]$

你可以使用更复杂的条件语句(?(condition)then|else):

^\[({)?[^]{}]+(?(1)}|)]$

(如果捕获组 1 存在,则 } 否则什么都没有)

但这种方式可能效率较低。

关于c# - 正则表达式 - 如果开始匹配则匹配结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29913744/

相关文章:

c# - 麦当劳到 C# 中的 ProperCase

mysql - 将数据复制到另一个 SQL 表中的不同名称的列中

c# PayPal Access Token 不返回任何东西,尽管连接是 "OK"

c# - Unity 3D Puts/Deletes http 方法

c# - Nuget 包不在构建时复制 native DLL

php - mysql与php在表中添加一行

sql - 在特定组之后在 SQL 输出中动态创建行

c# - 找不到路径的一部分 'C :\\Windows\\System32\\oobe\\info\\Backgrounds

c# - 为什么接口(interface)在 IL 级别作为 "abstract interface"发出?

c# - 应用程序设置可靠吗?