Filtering (--filter-from) not working

What is the problem you are having with rclone?

I am having problems getting my filtering correct.

I am using Rclone from my Synology NAS (synology_apollolake_918+) with pictures and media and want to make a clone to Pcloud.
I have configured the script and this part is working!
However I want to split the folder "pictures and media" from the NAS to al folder "Pictures" and a folder "Media"

For this I used a --filter-from in a text file, accessible / readable from the Rclone running on the NAS. However, the filters don't seem to work.

This is the content of the filter (first characters are - or + but the :

ash-4.3# cat /volume1/tools/Backup/rclone-JPG.txt
- @eaDir/**
- #recycle/**
+ (?i) *.jpg
+ (?i) *.bmp
+ (?i) *.psd
+ (?i) *.pdf
+ (?i) *.jpeg
+ (?i) *.gif
+ (?i) *.png
+ (?i) *.heic

My simple thought is to exclude the @eaDir (tumbnails) and #recycle (trash).
I want to include all the picture sort of files and nothing else and added the (?i) to make it case insensitive (jpg and JPG and Jpg all included).

If I run the script however I see that other files are picked up as well (.Mov)

ash-4.3# rclone sync /volume1/photo/Iphone/Joost remote:/Rclone_Photo/JPG/ --progress --checksum --filter-from /volume1/tools/Backup/rclone-JPG.txt --log-file=/volume1/tools/Backup/syncJPG_log.txt --log-level=DEBUG
Transferred:   	   31.226 MiB / 1.198 GiB, 3%, 3.657 MiB/s, ETA 5m26s
Transferred:           15 / 191, 8%
Elapsed time:         8.5s
Transferring:
 *                                  IMG_7715.MOV: 22% /42.799Mi, 1.152Mi/s, 28s
 *                                  IMG_8484.MOV: 13% /24.988Mi, 1.748Mi/s, 12s
 *                                  IMG_8485.MOV:  6% /34.256Mi, 0/s, -

I even tried to add an extra line to the clone-JPG.txt (last line) with "- *" to state explicit that if the picture lines are not met nothing else should be transfered.
However if I add this, nothing gets transferred anymore.

If this folder workings, I want to use it on a bigger scale with all my pictures over the years taken. And another script with contents like + *.avi + *.mov + *.mp4 etc for the "movie" folder. But expect if I have the above working, everything will be working :blush:

Run the command 'rclone version' and share the full output of the command.

rclone version
rclone v1.69.1

  • os/version: unknown
  • os/kernel: 4.4.59+ (x86_64)
  • os/type: linux
  • os/arch: amd64
  • go/version: go1.24.0
  • go/linking: static
  • go/tags: none

Which cloud storage system are you using? (eg Google Drive)

Pcloud

The command you were trying to run (eg rclone copy /tmp remote:tmp)

rclone sync /volume1/photo/Iphone/Joost remote:/Rclone_Photo/JPG/ --progress --checksum --filter-from /volume1/tools/Backup/rclone-JPG.txt --log-file=/volume1/tools/Backup/syncJPG_log.txt --log-level=DEBUG

debug log content:

2025/03/08 14:25:19 DEBUG : rclone: Version "v1.69.1" starting with parameters ["rclone" "sync" "/volume1/photo/Iphone/Joost" "remote:/Rclone_Photo/JPG/" "--progress" "--checksum" "--filter-from" "/volume1/tools/Backup/rclone-JPG.txt" "--log-file=/volume1/tools/Backup/syncJPG_log.txt" "--log-level=DEBUG"]
2025/03/08 14:25:19 DEBUG : Creating backend with remote "/volume1/photo/Iphone/Joost"
2025/03/08 14:25:19 DEBUG : Using config file from "/root/.config/rclone/rclone.conf"
2025/03/08 14:25:19 DEBUG : Creating backend with remote "remote:/Rclone_Photo/JPG/"
2025/03/08 14:25:19 DEBUG : fs cache: renaming cache item "remote:/Rclone_Photo/JPG/" to be canonical "remote:Rclone_Photo/JPG"
2025/03/08 14:25:19 DEBUG : @eaDir: Excluded
2025/03/08 14:25:19 DEBUG : .DS_Store: Excluded (Path Filter)
2025/03/08 14:25:19 DEBUG : .DS_Store: Excluded
2025/03/08 14:25:19 DEBUG : pcloud root 'Rclone_Photo/JPG': Waiting for checks to finish
2025/03/08 14:25:19 DEBUG : pcloud root 'Rclone_Photo/JPG': Waiting for transfers to finish
2025/03/08 14:25:19 DEBUG : Waiting for deletions to finish
2025/03/08 14:25:19 INFO  : There was nothing to transfer
2025/03/08 14:25:19 INFO  : 
Transferred:   	          0 B / 0 B, -, 0 B/s, ETA -
Elapsed time:         0.0s

2025/03/08 14:25:19 DEBUG : 5 go routines active
2025/03/08 14:25:50 DEBUG : rclone: Version "v1.69.1" starting with parameters ["rclone" "sync" "/volume1/photo/Iphone/Joost" "remote:/Rclone_Photo/JPG/" "--progress" "--checksum" "--filter-from" "/volume1/tools/Backup/rclone-JPG.txt" "--log-file=/volume1/tools/Backup/syncJPG_log.txt" "--log-level=DEBUG"]
2025/03/08 14:25:50 DEBUG : Creating backend with remote "/volume1/photo/Iphone/Joost"
2025/03/08 14:25:50 DEBUG : Using config file from "/root/.config/rclone/rclone.conf"
2025/03/08 14:25:50 DEBUG : Creating backend with remote "remote:/Rclone_Photo/JPG/"
2025/03/08 14:25:51 DEBUG : fs cache: renaming cache item "remote:/Rclone_Photo/JPG/" to be canonical "remote:Rclone_Photo/JPG"
2025/03/08 14:25:51 DEBUG : @eaDir: Excluded
2025/03/08 14:25:51 DEBUG : IMG_6341.JPG: Need to transfer - File not found at Destination
2025/03/08 14:25:51 DEBUG : IMG_6342.JPG: Need to transfer - File not found at Destination
2025/03/08 14:25:51 DEBUG : IMG_7715.MOV: Need to transfer - File not found at Destination
2025/03/08 14:25:51 DEBUG : Thumbs.db: Need to transfer - File not found at Destination
2025/03/08 14:25:51 DEBUG : pcloud root 'Rclone_Photo/JPG': Waiting for checks to finish
2025/03/08 14:25:51 DEBUG : pcloud root 'Rclone_Photo/JPG': Waiting for transfers to finish
2025/03/08 14:25:51 DEBUG : IMG_6341.JPG: sha1 = bc0edc777a0def8f905fff3cd977eeb7b9a601c5 OK
2025/03/08 14:25:51 DEBUG : IMG_6342.JPG: sha1 = 28a1662053ad1d7256841d898403835e97ae821f OK
2025/03/08 14:25:51 DEBUG : IMG_6341.JPG.244fe84b.partial: renamed to: IMG_6341.JPG
2025/03/08 14:25:51 INFO  : IMG_6341.JPG: Copied (new)
2025/03/08 14:25:51 DEBUG : IMG_6342.JPG.dcdf3beb.partial: renamed to: IMG_6342.JPG
2025/03/08 14:25:51 INFO  : IMG_6342.JPG: Copied (new)
2025/03/08 14:25:52 DEBUG : IMG_8074.JPG: sha1 = 081ca09cb70b36cbe7a65cdabc4315a352736fe6 OK
2025/03/08 14:25:52 DEBUG : IMG_8074.JPG.8281d013.partial: renamed to: IMG_8074.JPG
2025/03/08 14:25:52 INFO  : IMG_8074.JPG: Copied (new)
2025/03/08 14:25:52 DEBUG : IMG_8006.mp4: sha1 = f20979238807d8c382b4f57e493727b0ad059004 OK
2025/03/08 14:25:52 DEBUG : IMG_8006.mp4.ef300c41.partial: renamed to: IMG_8006.mp4
2025/03/08 14:25:52 INFO  : IMG_8006.mp4: Copied (new)
2025/03/08 14:25:52 DEBUG : IMG_8075.JPG: sha1 = 27e364f7c35c56ae3c99da7a05f5df94c84d3c59 OK
2025/03/08 14:25:53 DEBUG : IMG_8075.JPG.555c6698.partial: renamed to: IMG_8075.JPG
2025/03/08 14:25:53 INFO  : IMG_8075.JPG: Copied (new)
2025/03/08 14:25:54 DEBUG : IMG_8261.JPG: sha1 = f6cb4d2e70288c2bd15f6db8e9c2c647ab889f7f OK
2025/03/08 14:25:54 DEBUG : IMG_8262.JPG: sha1 = 385973d2a8d97a29a71cd2162096d3cc71b98a62 OK
2025/03/08 14:25:55 DEBUG : IMG_8261.JPG.c7434adf.partial: renamed to: IMG_8261.JPG
2025/03/08 14:25:55 INFO  : IMG_8261.JPG: Copied (new)
2025/03/08 14:25:55 DEBUG : IMG_8262.JPG.706e7e46.partial: renamed to: IMG_8262.JPG
2025/03/08 14:25:55 INFO  : IMG_8262.JPG: Copied (new)
2025/03/08 14:25:55 DEBUG : IMG_8314.JPG: sha1 = c7678c838ad99bf78412353c9d1fd2075cd3b06a OK
2025/03/08 14:25:55 DEBUG : IMG_8314.JPG.355b7cea.partial: renamed to: IMG_8314.JPG
2025/03/08 14:25:55 INFO  : IMG_8314.JPG: Copied (new)
2025/03/08 14:25:55 DEBUG : IMG_8375.JPG: sha1 = d2e813192e8682c8a5c849d90efe32352a12fc4b OK
2025/03/08 14:25:55 DEBUG : IMG_8382.JPG: sha1 = a8cf805b544433cd89ac8528854b75eea6ebd8e3 OK
2025/03/08 14:25:55 DEBUG : IMG_8375.JPG.39e8702b.partial: renamed to: IMG_8375.JPG
2025/03/08 14:25:55 INFO  : IMG_8375.JPG: Copied (new)
2025/03/08 14:25:55 DEBUG : IMG_8382.JPG.4cfa3efa.partial: renamed to: IMG_8382.JPG
2025/03/08 14:25:55 INFO  : IMG_8382.JPG: Copied (new)
2025/03/08 14:25:56 DEBUG : IMG_8390.JPG: sha1 = 9eee0f5e3583870589609f8eb186d807156d7d78 OK
2025/03/08 14:25:56 DEBUG : IMG_8390.JPG.74007ea.partial: renamed to: IMG_8390.JPG
2025/03/08 14:25:56 INFO  : IMG_8390.JPG: Copied (new)
2025/03/08 14:25:57 DEBUG : IMG_8403.JPG: sha1 = 6f5d7cefd12f50fa2f6839d2765989db42175ee9 OK
2025/03/08 14:25:57 DEBUG : IMG_8403.JPG.d08d0c09.partial: renamed to: IMG_8403.JPG
2025/03/08 14:25:57 INFO  : IMG_8403.JPG: Copied (new)
2025/03/08 14:25:57 DEBUG : IMG_8479.JPG: sha1 = 144c4422ebd94622de20c4bca45b9ca37c03a63f OK
2025/03/08 14:25:57 DEBUG : IMG_8479.JPG.420ec59e.partial: renamed to: IMG_8479.JPG
2025/03/08 14:25:57 INFO  : IMG_8479.JPG: Copied (new)
2025/03/08 14:25:58 DEBUG : IMG_8466.JPG: sha1 = a992c089f7c64a3d729536056db2b0e8ee636f2c OK
2025/03/08 14:25:58 DEBUG : IMG_8466.JPG.141f35e2.partial: renamed to: IMG_8466.JPG
2025/03/08 14:25:58 INFO  : IMG_8466.JPG: Copied (new)
2025/03/08 14:25:59 DEBUG : IMG_8481.JPG: sha1 = c287e5c29f9d0b37cb22dbae2e650d981300a59d OK
2025/03/08 14:25:59 DEBUG : IMG_8481.JPG.353ba0e7.partial: renamed to: IMG_8481.JPG
2025/03/08 14:25:59 INFO  : IMG_8481.JPG: Copied (new)
2025/03/08 14:25:59 INFO  : Signal received: interrupt
2025/03/08 14:26:00 DEBUG : IMG_8488.JPG: sha1 = c711e5c795e61ee0584b414d423b4d145e313fea OK
2025/03/08 14:26:00 INFO  : Exiting...

When using filters you have to remember to exclude whatever is not included at the end, so:

- @eaDir/**
- #recycle/**
+ (?i) *.jpg
+ (?i) *.bmp
...
+ (?i) *.png
+ (?i) *.heic
- **

see the last line.

--include flag do this automatically.

It is mentioned in docs:

If there is an --include or --include-from flag specified, rclone implies a - ** rule which it adds to the bottom of the internal rule list. Specifying a + rule with a --filter... flag does not imply that rule.

but maybe could be more explicit.

Hello Kapitainsky,
Thanks for your time!

Unfortunaty this also did not work (I hoped it was that simple just adding the asterisk)
I created a test folder containing some I want (picture) and some I didn't (movie and .db)

ash-4.3# ls -l /volume1/photo/Iphone/test
total 77912
drwxr-xr-x 1 root  root       436 Mar  8 15:07 @eaDir
-rwxrwxrwx 1 joost users 44877830 Jun 27  2015 IMG_7715.MOV
-rwxrwxrwx 1 joost users   751101 Aug 11  2015 IMG_8006.mp4
-rwxrwxrwx 1 joost users 26202135 Jan 23  2016 IMG_8484.MOV
-rwxrwxrwx 1 joost users  3987182 May  3  2016 IMG_8991.mp4
-rwxrwxrwx 1 joost users   753221 May 26  2016 IMG_9132.PNG
-rwxrwxrwx 1 joost users   129524 May 29  2016 IMG_9140.PNG
-rwxrwxrwx 1 joost users  2345093 Jun  8  2016 IMG_9188.JPG
-rwxrwxrwx 1 joost users   253142 Jun  9  2016 IMG_9189.JPG
-rwxrwxrwx 1 joost users   463872 Dec 22  2023 Thumbs.db

here I added the double asterisks at the end:

ash-4.3# cat /volume1/tools/Backup/rclone-JPG.txt
- @eaDir/**
- #recycle/**
+ (?i) *.jpg
+ (?i) *.bmp
+ (?i) *.psd
+ (?i) *.pdf
+ (?i) *.jpeg
+ (?i) *.gif
+ (?i) *.png
+ (?i) *.heic
- **

ran the script and nothing happend :frowning:

ash-4.3# rclone sync /volume1/photo/Iphone/test remote:/Rclone_Photo/JPG/ --progress --checksum --filter-from /volume1/tools/Backup/rclone-JPG.txt --log-file=/volume1/tools/Backup/syncJPG_log.txt --log-level=DEBUG
Transferred:   	          0 B / 0 B, -, 0 B/s, ETA -
Elapsed time:         0.1s
ash-4.3#

Checking the log:

2025/03/08 15:23:47 DEBUG : rclone: Version "v1.69.1" starting with parameters ["rclone" "sync" "/volume1/photo/Iphone/test" "remote:/Rclone_Photo/JPG/" "--progress" "--checksum" "--filter-from" "/volume1/tools/Backup/rclone-JPG.txt" "--log-file=/volume1/tools/Backup/syncJPG_log.txt" "--log-level=DEBUG"]
2025/03/08 15:23:47 DEBUG : Creating backend with remote "/volume1/photo/Iphone/test"
2025/03/08 15:23:47 DEBUG : Using config file from "/root/.config/rclone/rclone.conf"
2025/03/08 15:23:47 DEBUG : Creating backend with remote "remote:/Rclone_Photo/JPG/"
2025/03/08 15:23:47 DEBUG : fs cache: renaming cache item "remote:/Rclone_Photo/JPG/" to be canonical "remote:Rclone_Photo/JPG"
2025/03/08 15:23:47 DEBUG : @eaDir: Excluded
2025/03/08 15:23:48 DEBUG : IMG_7715.MOV: Excluded (Path Filter)
2025/03/08 15:23:48 DEBUG : IMG_7715.MOV: Excluded
2025/03/08 15:23:48 DEBUG : IMG_8006.mp4: Excluded (Path Filter)
2025/03/08 15:23:48 DEBUG : IMG_8006.mp4: Excluded
2025/03/08 15:23:48 DEBUG : IMG_8484.MOV: Excluded (Path Filter)
2025/03/08 15:23:48 DEBUG : IMG_8484.MOV: Excluded
2025/03/08 15:23:48 DEBUG : IMG_8991.mp4: Excluded (Path Filter)
2025/03/08 15:23:48 DEBUG : IMG_8991.mp4: Excluded
2025/03/08 15:23:48 DEBUG : IMG_9132.PNG: Excluded (Path Filter)
2025/03/08 15:23:48 DEBUG : IMG_9132.PNG: Excluded
2025/03/08 15:23:48 DEBUG : IMG_9140.PNG: Excluded (Path Filter)
2025/03/08 15:23:48 DEBUG : IMG_9140.PNG: Excluded
2025/03/08 15:23:48 DEBUG : IMG_9188.JPG: Excluded (Path Filter)
2025/03/08 15:23:48 DEBUG : IMG_9188.JPG: Excluded
2025/03/08 15:23:48 DEBUG : IMG_9189.JPG: Excluded (Path Filter)
2025/03/08 15:23:48 DEBUG : IMG_9189.JPG: Excluded
2025/03/08 15:23:48 DEBUG : Thumbs.db: Excluded (Path Filter)
2025/03/08 15:23:48 DEBUG : Thumbs.db: Excluded
2025/03/08 15:23:48 DEBUG : pcloud root 'Rclone_Photo/JPG': Waiting for checks to finish
2025/03/08 15:23:48 DEBUG : pcloud root 'Rclone_Photo/JPG': Waiting for transfers to finish
2025/03/08 15:23:48 DEBUG : Waiting for deletions to finish
2025/03/08 15:23:48 INFO  : There was nothing to transfer
2025/03/08 15:23:48 INFO  : 
Transferred:   	          0 B / 0 B, -, 0 B/s, ETA -
Elapsed time:         0.0s

2025/03/08 15:23:48 DEBUG : 4 go routines active

Then I removed the "- **" last line

ash-4.3# cat /volume1/tools/Backup/rclone-JPG.txt
- @eaDir/**
- #recycle/**
+ (?i) *.jpg
+ (?i) *.bmp
+ (?i) *.psd
+ (?i) *.pdf
+ (?i) *.jpeg
+ (?i) *.gif
+ (?i) *.png
+ (?i) *.heic

and started the rclone again. All the action was visible and seen in the logs and ALL files, included the ones I did not want were send over:

2025/03/08 15:26:38 DEBUG : rclone: Version "v1.69.1" starting with parameters ["rclone" "sync" "/volume1/photo/Iphone/test" "remote:/Rclone_Photo/JPG/" "--progress" "--checksum" "--filter-from" "/volume1/tools/Backup/rclone-JPG.txt" "--log-file=/volume1/tools/Backup/syncJPG_log.txt" "--log-level=DEBUG"]
2025/03/08 15:26:38 DEBUG : Creating backend with remote "/volume1/photo/Iphone/test"
2025/03/08 15:26:38 DEBUG : Using config file from "/root/.config/rclone/rclone.conf"
2025/03/08 15:26:38 DEBUG : Creating backend with remote "remote:/Rclone_Photo/JPG/"
2025/03/08 15:26:38 DEBUG : fs cache: renaming cache item "remote:/Rclone_Photo/JPG/" to be canonical "remote:Rclone_Photo/JPG"
2025/03/08 15:26:38 DEBUG : @eaDir: Excluded
2025/03/08 15:26:38 DEBUG : pcloud root 'Rclone_Photo/JPG': Waiting for checks to finish
2025/03/08 15:26:38 DEBUG : IMG_8006.mp4: sha1 = f20979238807d8c382b4f57e493727b0ad059004 OK
2025/03/08 15:26:38 DEBUG : IMG_8006.mp4: Size and sha1 of src and dst objects identical
2025/03/08 15:26:38 DEBUG : IMG_8006.mp4: Unchanged skipping
2025/03/08 15:26:38 DEBUG : IMG_9189.JPG: sha1 = 28cf49dac104216b8718585833c76a8b34007669 OK
2025/03/08 15:26:38 DEBUG : IMG_9189.JPG: Size and sha1 of src and dst objects identical
2025/03/08 15:26:38 DEBUG : IMG_9189.JPG: Unchanged skipping
2025/03/08 15:26:38 DEBUG : IMG_9140.PNG: sha1 = 549757afcb2f44292632ecba8916d3f677703bd3 OK
2025/03/08 15:26:38 DEBUG : IMG_9140.PNG: Size and sha1 of src and dst objects identical
2025/03/08 15:26:38 DEBUG : IMG_9140.PNG: Unchanged skipping
2025/03/08 15:26:38 DEBUG : IMG_9132.PNG: sha1 = ee8fc428e8986e16228960aca6bc3d15893e82d3 OK
2025/03/08 15:26:38 DEBUG : IMG_9132.PNG: Size and sha1 of src and dst objects identical
2025/03/08 15:26:38 DEBUG : IMG_9132.PNG: Unchanged skipping
2025/03/08 15:26:38 DEBUG : Thumbs.db: sha1 = c58b1b8d1e982c0f986340219389aabd1b6c0fe7 OK
2025/03/08 15:26:38 DEBUG : Thumbs.db: Size and sha1 of src and dst objects identical
2025/03/08 15:26:38 DEBUG : Thumbs.db: Unchanged skipping
2025/03/08 15:26:38 DEBUG : IMG_8991.mp4: sha1 = c730d3f7e023cf07750477cc0a94b29020f6688e OK
2025/03/08 15:26:38 DEBUG : IMG_8991.mp4: Size and sha1 of src and dst objects identical
2025/03/08 15:26:38 DEBUG : IMG_8991.mp4: Unchanged skipping
2025/03/08 15:26:39 DEBUG : IMG_9188.JPG: sha1 = b7fe95d62a340f740093f2006093ff1bd59eaed0 OK
2025/03/08 15:26:39 DEBUG : IMG_9188.JPG: Size and sha1 of src and dst objects identical
2025/03/08 15:26:39 DEBUG : IMG_9188.JPG: Unchanged skipping
2025/03/08 15:26:39 DEBUG : IMG_8484.MOV: sha1 = ef9d308a699d95e2bd4651599d5d7bc13e914096 OK
2025/03/08 15:26:39 DEBUG : IMG_8484.MOV: Size and sha1 of src and dst objects identical
2025/03/08 15:26:39 DEBUG : IMG_8484.MOV: Unchanged skipping
2025/03/08 15:26:39 DEBUG : IMG_7715.MOV: sha1 = 96cc7033423dd9dfaa5eb9abc1180b452475cf79 OK
2025/03/08 15:26:39 DEBUG : IMG_7715.MOV: Size and sha1 of src and dst objects identical
2025/03/08 15:26:39 DEBUG : IMG_7715.MOV: Unchanged skipping
2025/03/08 15:26:39 DEBUG : pcloud root 'Rclone_Photo/JPG': Waiting for transfers to finish
2025/03/08 15:26:39 DEBUG : Waiting for deletions to finish
2025/03/08 15:26:39 INFO  : There was nothing to transfer
2025/03/08 15:26:39 INFO  : 
Transferred:   	          0 B / 0 B, -, 0 B/s, ETA -
Checks:                 9 / 9, 100%
Elapsed time:         0.5s

2025/03/08 15:26:39 DEBUG : 4 go routines active

Yeap. Your filter does not match anything so everything is excluded. I am not going to analyse what your filter does (or does not). Even if I am a bit curious what (?i) pattern was supposed to match... but can live without this knowledge:)

Why not to make it simple?:slight_smile:

$ rclone ls .
        0 IMG_7715.MOV
        0 IMG_8006.mp4
        0 IMG_8484.MOV
        0 IMG_8991.mp4
        0 IMG_9132.PNG
        0 IMG_9140.PNG
        0 IMG_9188.JPG
        0 IMG_9189.JPG
        0 Thumbs.db
        0 @eaDir/file

$ cat ../filter
- @eaDir/**
- #recycle/**
+ *.jpg
+ *.bmp
+ *.psd
+ *.pdf
+ *.jpeg
+ *.gif
+ *.png
+ *.heic
- **

$ rclone ls . --filter-from ../filter --ignore-case
        0 IMG_9132.PNG
        0 IMG_9140.PNG
        0 IMG_9188.JPG
        0 IMG_9189.JPG
1 Like

This seems to be it! :smiley:

The --ignore-case instead of (?i) for every item seems to do the trick!

I am very happy and the bits are flowing...
Thank Kapitainsky!

1 Like

Glad it works now.

I do not think rclone understands (?i). It probably reads it literally - but I might be wrong:) Filters' patterns have a lot of quirks and "secrets":slight_smile:

In more complex cases I prefer to go straight to regex. But overall keeping things simple is the best way.

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.