その正規表現は、連結する属性が4つ以上の場合にも対応しているはずなんですが...
念のため次の式でテストしたところ、"A-D"が得られました。
attr1 = "A"
attr2 = ""
attr3 = ""
attr4 = "D"
@ReplaceRegEx(@Value(attr1)-@Value(attr2)-@Value(attr3)-@Value(attr4),-(?=(-|$)),"")
もう一度確認していただけませんか?
FMEのリストは便利な仕組みですよね。
連結する順番 = 属性名の辞書順という前提ならば、Hub の AttributeListPopulator (Populating Order: Name Ascending (Alphabetic)) も使えます。
おまけの Python バージョン。
def processFeature(feature):
attrs = ['attr1', 'attr2', 'attr3']
values = ['%s' % feature.getAttribute(a) for a in attrs]
feature.setAttribute('_result', '-'.join([v for v in values if v]))
[追記] 上のスクリプトだと、属性が欠落していたときに 'None' が連結されてしまうので、次の方が良いかな。
def processFeature(feature):
attrs = ['attr1', 'attr2', 'attr3']
values = [feature.getAttribute(a) for a in attrs]
feature.setAttribute('_result', '-'.join(['%s' % v for v in values if v]))