Seite 1 von 1

[Gelöst] Regular Expressions in NAV verwenden

Verfasst: 24. Juni 2010 11:29
von ralf5
Hallo,

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

Gruß
Ralf

Re: Regular Expressions in NAV verwenden

Verfasst: 24. Juni 2010 11:49
von Natalie
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

Verfasst: 24. Juni 2010 12:24
von ralf5
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

Verfasst: 24. Juni 2010 12:43
von Natalie
Dann danke für das Codebeispiel!

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

Verfasst: 24. Juni 2010 13:24
von Timo Lässer
Ich habe es mal in unsere Tipps & Tricks Sammlung verschoben.

Re: Regular Expressions in NAV verwenden

Verfasst: 25. Juni 2010 09:53
von Natalie
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

Verfasst: 12. März 2018 12:33
von tepler
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

Verfasst: 12. März 2018 14:31
von Danis
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

Verfasst: 12. März 2018 16:04
von ERP-Berater
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!