[Gelöst] Regular Expressions in NAV verwenden

24. Juni 2010 11:29

Hallo,

ist es möglich Regular Expressions in NAV zu verwenden?

Gruß
Ralf
Zuletzt geändert von ralf5 am 24. Juni 2010 12:24, insgesamt 1-mal geändert.

Re: Regular Expressions in NAV verwenden

24. Juni 2010 11:49

Reguläre Ausdrücke werden in C/AL zumindest nicht direkt unterstützt.
Was genau möchtest du denn abbilden?

Re: Regular Expressions in NAV verwenden

24. Juni 2010 12:24

Hallo Natalie

Danke, habe es doch tatsächlich selbst hinbekommen.

ich möchte in der Tabelle Contact alle Datensätze, bei denen die E-Mailadresse ungültig ist.


So gehts:
In den Globals eine Variable deklarieren
Name      DataType       Subtype
RegExp   Automation     'Microsoft VBScript Regular Expressions 1.0'.RegExp

Und im Report:
Code:
Contact - OnPreDataItem()
SETFILTER(Contact."E-Mail", '<>''''');
CREATE(RegExp);
RegExp.Pattern('^([\w-]+\.)*?[\w-]+@[\w-]+\.([\w-]+\.)*?[\w]+$');

Contact - OnAfterGetRecord()
IF RegExp.Test(Contact."E-Mail") THEN
  CurrReport.SKIP;


Gruß
Ralf

Re: [Gelöst] Regular Expressions in NAV verwenden

24. Juni 2010 12:43

Dann danke für das Codebeispiel!

Re: [Gelöst] Regular Expressions in NAV verwenden

24. Juni 2010 13:24

Ich habe es mal in unsere Tipps & Tricks Sammlung verschoben.

Re: Regular Expressions in NAV verwenden

25. Juni 2010 09:53

ralf5 hat geschrieben:
Code:
Contact - OnPreDataItem()
SETFILTER(Contact."E-Mail", '<>''''');
CREATE(RegExp);
RegExp.Pattern('^([\w-]+\.)*?[\w-]+@[\w-]+\.([\w-]+\.)*?[\w]+$');

Contact - OnAfterGetRecord()
IF RegExp.Test(Contact."E-Mail") THEN
  CurrReport.SKIP;


viewtopic.php?p=52476#p52476
ralf5 hat geschrieben:Kurze Erläuterung zu dem verwendeten Muster:
Das erste \w steht für ein beliebiges Wortzeichen (inkl. Unterstrich). Durch das anschließende +-Zeichen wird festgelegt, dass auch mehrere aufeinanderfolgende Wortzeichen zulässig sind. \. bedeutet, dass auf die Wortzeichen ein Punkt folgen muss. Durch Angabe von *? wird festgelegt, dass es sich bei der bisherigen Musterfestlegung um eine optionale Gruppe handelt, sich diese Gruppe jedoch auch wiederholen darf. Das zweite \w bedeutet, dass hier wieder ein Wortzeichen folgen muss. Durch Angabe des nachfolgenden +-Zeichens wird festgelegt, dass sich das Wortzeichen beliebig wiederholen darf, aber mindestens eines vorhanden sein muss, ehe dann durch Angabe von @ das @-Zeichen folgen muss. Der zweite Teil des Musters nach dem @-Zeichen entspricht weitestgehend dem des ersten Teils.

Quelle: http://www.vbarchiv.net/tipps/tipp_1311 ... n-net.html

Re: [Gelöst] Regular Expressions in NAV verwenden

12. März 2018 12:33

Kleine Aktualisierung, falls man statt Abhängigkeit zu VBScript lieber .NET verwenden möchte. Über die folgende NAV Funktion "ValidateText" kann man prüfen lassen, ob der Text "PT_Text" dem regulären Ausdruck "PT_RegEx" entspricht:

Code:
Notwendige Variable:
Name     LDN_Regex
DataType DotNet
Subtype  System.Text.RegularExpressions.Regex.'System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'   


Code:
ValidateText(PT_Text : Text[250];PT_RegEx : Text[250]) result : Boolean
result := LDN_Regex.IsMatch(PT_Text, PT_RegEx);


Gruß, Ralf

Re: [Gelöst] Regular Expressions in NAV verwenden

12. März 2018 14:31

In der C/AL Open Library werden übrigens auch einige RegEx Funktionen zur Verfügung gestellt:

hier zB. RegexReplace

Re: [Gelöst] Regular Expressions in NAV verwenden

12. März 2018 16:04

Danis hat geschrieben:In der C/AL Open Library werden übrigens auch einige RegEx Funktionen zur Verfügung gestellt:

hier zB. RegexReplace


Danke, denn das ist sehr nützlich für eine Datenbereinigung nach fest definiertem Muster!