【问题标题】:powershell regex options for making a bracket optional用于使括号可选的 powershell 正则表达式选项
【发布时间】:2016-11-11 21:18:54
【问题描述】:

我实际上是 powershell 正则表达式的新手。我需要正则表达式来替换 Create 过程的第一行。

CREATE PROCEDURE dbo.Airplane_RBMId
 (
 @IN_AirplaneID INT,
 @IN_RegionBusinessModelID INT
 )
 AS
 BEGIN
 SET NOCOUNT ON;

这里可能有两种情况,其中 dbo 和过程名称可以带括号或不带括号。所以需要使括号可选

CREATE PROCEDURE dbo.Airplane_RBMId
CREATE PROCEDURE [dbo].[Airplane_RBMId]

我制作的 powershell 正则表达式与括号一起工作正常。

$Temp = $element -ireplace "\s*CREATE\s*PROCEDURE\s*\[dbo\]\.\[([^\]]+)\]","$CreateBlock"

【问题讨论】:

  • ? 使前一个令牌成为可选的,例如\[?

标签: powershell


【解决方案1】:
$element -replace '\s*CREATE\s*PROCEDURE\s*(\[dbo]|dbo)\.\[{0,1}(\S+)]{0,1}',$CreateBlock
  • (\[dbo]|dbo) 匹配 [dbo]dbo
  • \[{0,1} 匹配 0 或 1 [ 括号。
  • (\S+) 匹配一个或多个非空格作为过程名称。
  • ]{0,1} 匹配 0 或 1 ] 括号。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-08
    相关资源
    最近更新 更多