我创建了一个schematron规则,以不区分大小写的方式搜索变量给出的特定文本(由" i"标志提供):
<sch:report test="matches(.,concat('(^|\W)',$phrase,'(\W|$)'),'i')" role="error"
sqf:fix="replaceWithKey">...</sch:report>
其中$ phrase =&#39;(词组)&#39;
我希望用户能够使用快速修复并替换文本,但我不知道如何在快速修复中提供不区分大小写的解决方案。我的初始版本如下:
<sqf:fix id="replaceWithKey">
<sqf:stringReplace regex="{$phrase}">
...
</sqf:stringReplace>
只有在文本的一部分与$ phrase具有完全相同的大小写时,快速修复才有效,尽管在每种情况下都会识别规则违规。有没有办法利用&#34; i&#34;正则表达式属性中的标志功能?
答案 0 :(得分:0)
我没有使用过SQF,但我认为你最后一个问题的答案是“不”。根据{{3}},from traits.api import Button, HasStrictTraits, Int, List
from traitsui.api import Group, Item, ListEditor, UItem, View
class DynamicListOfInts(HasStrictTraits):
integer_list = List(Int)
add_int = Button('Add integer')
def default_traits_view(self):
view = View(
Group(
UItem('add_int'),
Item('integer_list', editor=ListEditor()),
),
width=300,
height=500,
)
return view
def _add_int_changed(self):
self.integer_list.append(0)
if __name__ == '__main__':
list_of_ints = DynamicListOfInts()
list_of_ints.configure_traits()
不允许<sqf:stringReplace>
属性,正如flags
在XSLT中所做的那样。
并且reference docs没有提供在正则表达式本身内传递这些标志的方法。
最简单的方法可能是修改SQF以向<xsl:analyze-string>
添加flags
属性,或者要求SQF作者进行更改。
答案 1 :(得分:0)
关于此主题的两个更新:
flags
中对sqf:stringReplace
的支持将在未来添加到SQF 解决方法是使用sqf:replace
功能与xsl:analyze-string
结合使用,如下所示:
<sqf:replace>
<xsl:analyze-string select="." regex="{$phrase}" flags="i">
<xsl:matching-substring>...</xsl:matching-substring>
<xsl:non-matching-substring>
<xsl:value-of select="."/>
</xsl:non-matching substring>
</xsl:analyze-string>
</sqf:replace>