我有一个字符串,它将用于一个oracle查询,我需要解析该字符串并将该字符串中列的别名更改为不同的值,我需要使用正则表达式来完成此操作。
下面是我将要处理的字符串类型的一个示例:
ph.activity = ''ph.activity.1'' AND ((ph.activity = ''ph.act.1'' AND ph.activity = ''test.ph.act.1'' AND ph.activity = ''ph.test.23''))
我需要修改字符串中的所有ph.,其中ph.出现在字符串的开头,出现在(字符之后,出现在空格之后,而不是任何其他地方。
到目前为止,我的正则表达式如下:
(^ph\.)|( ph.)|(\(ph.)
这对我不起作用,因为它还捕获了ph.前面的空格字符以及ph前面的(字符。
我如何修改这个表达式来捕获ph.而不捕获(和空格字符?
1条答案
按热度按时间3pmvbmvn1#
您可以将模式更改为具有单个捕获组,该捕获组允许使用起始锚点、左括号或空格:
并在替换字符串中,将
\1
作为值的前缀,以便它包括匹配的任何内容。例如:
| 结果|
| - -|
| 测试活动= 'ph.activity.1' AND((测试活动= 'ph.act.1' AND测试活动= '测试ph.act.1' AND测试活动= 'ph.test.23'))|
fiddle